package de.thwildau.tm.moses.asn1.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.common.util.Enumerator;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import de.thwildau.tm.moses.asn1.services.Asn1GrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.util.HashMap;
@SuppressWarnings("all")
public class InternalAsn1Parser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_LONG", "RULE_B_STRING", "RULE_H_STRING", "RULE_STRING", "RULE_NUMBER", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'DEFINITIONS'", "'::='", "'BEGIN'", "'END'", "'INSTRUCTIONS'", "'EXPLICIT'", "'IMPLICIT'", "'AUTOMATIC'", "'TAGS'", "'EXTENSIBILITY IMPLIED'", "'EXPORTS'", "','", "'ALL'", "';'", "'IMPORTS'", "'FROM'", "'BOOLEAN'", "'INTEGER'", "'{'", "'}'", "'('", "')'", "'ENUMERATED'", "'...'", "'REAL'", "'mantissa'", "'base'", "'exponent'", "'BIT'", "'STRING'", "'OCTET'", "'CONTAINING'", "'NULL'", "'SEQUENCE'", "':'", "'[['", "']]'", "'OPTIONAL'", "'DEFAULT'", "'COMPONENTS'", "'OF'", "'ANY'", "'DEFINED'", "'BY'", "'SET'", "'CHOICE'", "'['", "']'", "'UNIVERSAL'", "'APPLICATION'", "'PRIVATE'", "'OBJECT'", "'IDENTIFIER'", "'TIME'", "'DATE'", "'TIME-OF-DAY'", "'DATE-TIME'", "'DURATION'", "'BMPString'", "'GeneralString'", "'GraphicString'", "'IA5String'", "'ISO646String'", "'NumericString'", "'PrintableString'", "'TeletexString'", "'T61String'", "'UniversalString'", "'UTF8String'", "'VideotexString'", "'VisibleString'", "'GeneralizedTime'", "'UTCTime'", "'ObjectDescriptor'", "'|'", "'UNION'", "'^'", "'INTERSECTION'", "'EXCEPT'", "'INCLUDES'", "'..'", "'<'", "'MIN'", "'MAX'", "'SIZE'", "'-'", "'.'", "'PLUS-INFINITY'", "'MINUS-INFINITY'", "'NOT-A-NUMBER'", "'false'", "'true'"
    };
    public static final int RULE_ID=4;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=13;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int EOF=-1;
    public static final int T__93=93;
    public static final int T__19=19;
    public static final int T__94=94;
    public static final int T__91=91;
    public static final int T__92=92;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__90=90;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__14=14;
    public static final int T__99=99;
    public static final int T__98=98;
    public static final int T__97=97;
    public static final int T__96=96;
    public static final int T__95=95;
    public static final int T__80=80;
    public static final int T__81=81;
    public static final int T__82=82;
    public static final int T__83=83;
    public static final int T__85=85;
    public static final int T__84=84;
    public static final int T__87=87;
    public static final int T__86=86;
    public static final int T__89=89;
    public static final int T__88=88;
    public static final int RULE_ML_COMMENT=10;
    public static final int RULE_STRING=8;
    public static final int T__71=71;
    public static final int T__72=72;
    public static final int T__70=70;
    public static final int RULE_H_STRING=7;
    public static final int T__76=76;
    public static final int T__75=75;
    public static final int T__74=74;
    public static final int T__73=73;
    public static final int T__79=79;
    public static final int T__78=78;
    public static final int T__77=77;
    public static final int T__68=68;
    public static final int T__69=69;
    public static final int T__66=66;
    public static final int T__67=67;
    public static final int T__64=64;
    public static final int T__65=65;
    public static final int T__62=62;
    public static final int T__63=63;
    public static final int T__61=61;
    public static final int T__60=60;
    public static final int T__55=55;
    public static final int T__56=56;
    public static final int T__57=57;
    public static final int T__58=58;
    public static final int T__51=51;
    public static final int T__52=52;
    public static final int T__53=53;
    public static final int T__54=54;
    public static final int RULE_NUMBER=9;
    public static final int T__103=103;
    public static final int T__59=59;
    public static final int T__104=104;
    public static final int T__105=105;
    public static final int T__50=50;
    public static final int T__42=42;
    public static final int T__43=43;
    public static final int T__40=40;
    public static final int T__41=41;
    public static final int T__46=46;
    public static final int T__47=47;
    public static final int T__44=44;
    public static final int T__45=45;
    public static final int RULE_LONG=5;
    public static final int T__48=48;
    public static final int T__49=49;
    public static final int T__102=102;
    public static final int T__101=101;
    public static final int T__100=100;
    public static final int RULE_SL_COMMENT=11;
    public static final int RULE_B_STRING=6;
    public static final int T__30=30;
    public static final int T__31=31;
    public static final int T__32=32;
    public static final int T__33=33;
    public static final int T__34=34;
    public static final int T__35=35;
    public static final int T__36=36;
    public static final int T__37=37;
    public static final int T__38=38;
    public static final int T__39=39;
    public static final int RULE_WS=12;

    // delegates
    // delegators


        public InternalAsn1Parser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalAsn1Parser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalAsn1Parser.tokenNames; }
    public String getGrammarFileName() { return "../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g"; }



     	private Asn1GrammarAccess grammarAccess;
     	
        public InternalAsn1Parser(TokenStream input, Asn1GrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Asn1";	
       	}
       	
       	@Override
       	protected Asn1GrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleAsn1"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:68:1: entryRuleAsn1 returns [EObject current=null] : iv_ruleAsn1= ruleAsn1 EOF ;
    public final EObject entryRuleAsn1() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAsn1 = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:69:2: (iv_ruleAsn1= ruleAsn1 EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:70:2: iv_ruleAsn1= ruleAsn1 EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAsn1Rule()); 
            }
            pushFollow(FOLLOW_ruleAsn1_in_entryRuleAsn175);
            iv_ruleAsn1=ruleAsn1();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAsn1; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAsn185); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAsn1"


    // $ANTLR start "ruleAsn1"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:77:1: ruleAsn1 returns [EObject current=null] : ( (lv_moduleDefinition_0_0= ruleModuleDefinition ) )+ ;
    public final EObject ruleAsn1() throws RecognitionException {
        EObject current = null;

        EObject lv_moduleDefinition_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:80:28: ( ( (lv_moduleDefinition_0_0= ruleModuleDefinition ) )+ )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:81:1: ( (lv_moduleDefinition_0_0= ruleModuleDefinition ) )+
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:81:1: ( (lv_moduleDefinition_0_0= ruleModuleDefinition ) )+
            int cnt1=0;
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==RULE_ID) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:82:1: (lv_moduleDefinition_0_0= ruleModuleDefinition )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:82:1: (lv_moduleDefinition_0_0= ruleModuleDefinition )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:83:3: lv_moduleDefinition_0_0= ruleModuleDefinition
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAsn1Access().getModuleDefinitionModuleDefinitionParserRuleCall_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleModuleDefinition_in_ruleAsn1130);
            	    lv_moduleDefinition_0_0=ruleModuleDefinition();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAsn1Rule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"moduleDefinition",
            	              		lv_moduleDefinition_0_0, 
            	              		"ModuleDefinition");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt1 >= 1 ) break loop1;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(1, input);
                        throw eee;
                }
                cnt1++;
            } while (true);


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAsn1"


    // $ANTLR start "entryRuleModuleDefinition"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:107:1: entryRuleModuleDefinition returns [EObject current=null] : iv_ruleModuleDefinition= ruleModuleDefinition EOF ;
    public final EObject entryRuleModuleDefinition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModuleDefinition = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:108:2: (iv_ruleModuleDefinition= ruleModuleDefinition EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:109:2: iv_ruleModuleDefinition= ruleModuleDefinition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getModuleDefinitionRule()); 
            }
            pushFollow(FOLLOW_ruleModuleDefinition_in_entryRuleModuleDefinition166);
            iv_ruleModuleDefinition=ruleModuleDefinition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleModuleDefinition; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleModuleDefinition176); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModuleDefinition"


    // $ANTLR start "ruleModuleDefinition"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:116:1: ruleModuleDefinition returns [EObject current=null] : ( ( (lv_moduleIdentifier_0_0= ruleModuleIdentifier ) ) otherlv_1= 'DEFINITIONS' ( (lv_encodingReferenceDefault_2_0= ruleEncodingReferenceDefault ) )? ( (lv_tagDefault_3_0= ruleTagDefault ) )? ( (lv_extensionDefault_4_0= ruleExtensionDefault ) )? otherlv_5= '::=' otherlv_6= 'BEGIN' ( (lv_moduleBody_7_0= ruleModuleBody ) )? otherlv_8= 'END' ) ;
    public final EObject ruleModuleDefinition() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        EObject lv_moduleIdentifier_0_0 = null;

        EObject lv_encodingReferenceDefault_2_0 = null;

        AntlrDatatypeRuleToken lv_tagDefault_3_0 = null;

        AntlrDatatypeRuleToken lv_extensionDefault_4_0 = null;

        EObject lv_moduleBody_7_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:119:28: ( ( ( (lv_moduleIdentifier_0_0= ruleModuleIdentifier ) ) otherlv_1= 'DEFINITIONS' ( (lv_encodingReferenceDefault_2_0= ruleEncodingReferenceDefault ) )? ( (lv_tagDefault_3_0= ruleTagDefault ) )? ( (lv_extensionDefault_4_0= ruleExtensionDefault ) )? otherlv_5= '::=' otherlv_6= 'BEGIN' ( (lv_moduleBody_7_0= ruleModuleBody ) )? otherlv_8= 'END' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:120:1: ( ( (lv_moduleIdentifier_0_0= ruleModuleIdentifier ) ) otherlv_1= 'DEFINITIONS' ( (lv_encodingReferenceDefault_2_0= ruleEncodingReferenceDefault ) )? ( (lv_tagDefault_3_0= ruleTagDefault ) )? ( (lv_extensionDefault_4_0= ruleExtensionDefault ) )? otherlv_5= '::=' otherlv_6= 'BEGIN' ( (lv_moduleBody_7_0= ruleModuleBody ) )? otherlv_8= 'END' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:120:1: ( ( (lv_moduleIdentifier_0_0= ruleModuleIdentifier ) ) otherlv_1= 'DEFINITIONS' ( (lv_encodingReferenceDefault_2_0= ruleEncodingReferenceDefault ) )? ( (lv_tagDefault_3_0= ruleTagDefault ) )? ( (lv_extensionDefault_4_0= ruleExtensionDefault ) )? otherlv_5= '::=' otherlv_6= 'BEGIN' ( (lv_moduleBody_7_0= ruleModuleBody ) )? otherlv_8= 'END' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:120:2: ( (lv_moduleIdentifier_0_0= ruleModuleIdentifier ) ) otherlv_1= 'DEFINITIONS' ( (lv_encodingReferenceDefault_2_0= ruleEncodingReferenceDefault ) )? ( (lv_tagDefault_3_0= ruleTagDefault ) )? ( (lv_extensionDefault_4_0= ruleExtensionDefault ) )? otherlv_5= '::=' otherlv_6= 'BEGIN' ( (lv_moduleBody_7_0= ruleModuleBody ) )? otherlv_8= 'END'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:120:2: ( (lv_moduleIdentifier_0_0= ruleModuleIdentifier ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:121:1: (lv_moduleIdentifier_0_0= ruleModuleIdentifier )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:121:1: (lv_moduleIdentifier_0_0= ruleModuleIdentifier )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:122:3: lv_moduleIdentifier_0_0= ruleModuleIdentifier
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getModuleDefinitionAccess().getModuleIdentifierModuleIdentifierParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleModuleIdentifier_in_ruleModuleDefinition222);
            lv_moduleIdentifier_0_0=ruleModuleIdentifier();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getModuleDefinitionRule());
              	        }
                     		set(
                     			current, 
                     			"moduleIdentifier",
                      		lv_moduleIdentifier_0_0, 
                      		"ModuleIdentifier");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,14,FOLLOW_14_in_ruleModuleDefinition234); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getModuleDefinitionAccess().getDEFINITIONSKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:142:1: ( (lv_encodingReferenceDefault_2_0= ruleEncodingReferenceDefault ) )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==RULE_ID) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:143:1: (lv_encodingReferenceDefault_2_0= ruleEncodingReferenceDefault )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:143:1: (lv_encodingReferenceDefault_2_0= ruleEncodingReferenceDefault )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:144:3: lv_encodingReferenceDefault_2_0= ruleEncodingReferenceDefault
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getModuleDefinitionAccess().getEncodingReferenceDefaultEncodingReferenceDefaultParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleEncodingReferenceDefault_in_ruleModuleDefinition255);
                    lv_encodingReferenceDefault_2_0=ruleEncodingReferenceDefault();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getModuleDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"encodingReferenceDefault",
                              		lv_encodingReferenceDefault_2_0, 
                              		"EncodingReferenceDefault");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:160:3: ( (lv_tagDefault_3_0= ruleTagDefault ) )?
            int alt3=2;
            int LA3_0 = input.LA(1);

            if ( ((LA3_0>=19 && LA3_0<=21)) ) {
                alt3=1;
            }
            switch (alt3) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:161:1: (lv_tagDefault_3_0= ruleTagDefault )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:161:1: (lv_tagDefault_3_0= ruleTagDefault )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:162:3: lv_tagDefault_3_0= ruleTagDefault
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getModuleDefinitionAccess().getTagDefaultTagDefaultParserRuleCall_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleTagDefault_in_ruleModuleDefinition277);
                    lv_tagDefault_3_0=ruleTagDefault();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getModuleDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"tagDefault",
                              		lv_tagDefault_3_0, 
                              		"TagDefault");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:178:3: ( (lv_extensionDefault_4_0= ruleExtensionDefault ) )?
            int alt4=2;
            int LA4_0 = input.LA(1);

            if ( (LA4_0==23) ) {
                alt4=1;
            }
            switch (alt4) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:179:1: (lv_extensionDefault_4_0= ruleExtensionDefault )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:179:1: (lv_extensionDefault_4_0= ruleExtensionDefault )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:180:3: lv_extensionDefault_4_0= ruleExtensionDefault
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getModuleDefinitionAccess().getExtensionDefaultExtensionDefaultParserRuleCall_4_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleExtensionDefault_in_ruleModuleDefinition299);
                    lv_extensionDefault_4_0=ruleExtensionDefault();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getModuleDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"extensionDefault",
                              		lv_extensionDefault_4_0, 
                              		"ExtensionDefault");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_5=(Token)match(input,15,FOLLOW_15_in_ruleModuleDefinition312); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_5, grammarAccess.getModuleDefinitionAccess().getColonColonEqualsSignKeyword_5());
                  
            }
            otherlv_6=(Token)match(input,16,FOLLOW_16_in_ruleModuleDefinition324); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getModuleDefinitionAccess().getBEGINKeyword_6());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:204:1: ( (lv_moduleBody_7_0= ruleModuleBody ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==RULE_ID||LA5_0==24||LA5_0==28) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:205:1: (lv_moduleBody_7_0= ruleModuleBody )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:205:1: (lv_moduleBody_7_0= ruleModuleBody )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:206:3: lv_moduleBody_7_0= ruleModuleBody
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getModuleDefinitionAccess().getModuleBodyModuleBodyParserRuleCall_7_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleModuleBody_in_ruleModuleDefinition345);
                    lv_moduleBody_7_0=ruleModuleBody();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getModuleDefinitionRule());
                      	        }
                             		set(
                             			current, 
                             			"moduleBody",
                              		lv_moduleBody_7_0, 
                              		"ModuleBody");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_8=(Token)match(input,17,FOLLOW_17_in_ruleModuleDefinition358); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getModuleDefinitionAccess().getENDKeyword_8());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModuleDefinition"


    // $ANTLR start "entryRuleModuleIdentifier"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:234:1: entryRuleModuleIdentifier returns [EObject current=null] : iv_ruleModuleIdentifier= ruleModuleIdentifier EOF ;
    public final EObject entryRuleModuleIdentifier() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModuleIdentifier = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:235:2: (iv_ruleModuleIdentifier= ruleModuleIdentifier EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:236:2: iv_ruleModuleIdentifier= ruleModuleIdentifier EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getModuleIdentifierRule()); 
            }
            pushFollow(FOLLOW_ruleModuleIdentifier_in_entryRuleModuleIdentifier394);
            iv_ruleModuleIdentifier=ruleModuleIdentifier();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleModuleIdentifier; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleModuleIdentifier404); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModuleIdentifier"


    // $ANTLR start "ruleModuleIdentifier"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:243:1: ruleModuleIdentifier returns [EObject current=null] : ( (lv_moduleReference_0_0= RULE_ID ) ) ;
    public final EObject ruleModuleIdentifier() throws RecognitionException {
        EObject current = null;

        Token lv_moduleReference_0_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:246:28: ( ( (lv_moduleReference_0_0= RULE_ID ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:247:1: ( (lv_moduleReference_0_0= RULE_ID ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:247:1: ( (lv_moduleReference_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:248:1: (lv_moduleReference_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:248:1: (lv_moduleReference_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:249:3: lv_moduleReference_0_0= RULE_ID
            {
            lv_moduleReference_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleModuleIdentifier445); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_moduleReference_0_0, grammarAccess.getModuleIdentifierAccess().getModuleReferenceIDTerminalRuleCall_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getModuleIdentifierRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"moduleReference",
                      		lv_moduleReference_0_0, 
                      		"ID");
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModuleIdentifier"


    // $ANTLR start "entryRuleEncodingReferenceDefault"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:273:1: entryRuleEncodingReferenceDefault returns [EObject current=null] : iv_ruleEncodingReferenceDefault= ruleEncodingReferenceDefault EOF ;
    public final EObject entryRuleEncodingReferenceDefault() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEncodingReferenceDefault = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:274:2: (iv_ruleEncodingReferenceDefault= ruleEncodingReferenceDefault EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:275:2: iv_ruleEncodingReferenceDefault= ruleEncodingReferenceDefault EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEncodingReferenceDefaultRule()); 
            }
            pushFollow(FOLLOW_ruleEncodingReferenceDefault_in_entryRuleEncodingReferenceDefault485);
            iv_ruleEncodingReferenceDefault=ruleEncodingReferenceDefault();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEncodingReferenceDefault; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleEncodingReferenceDefault495); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEncodingReferenceDefault"


    // $ANTLR start "ruleEncodingReferenceDefault"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:282:1: ruleEncodingReferenceDefault returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'INSTRUCTIONS' ) ;
    public final EObject ruleEncodingReferenceDefault() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:285:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'INSTRUCTIONS' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:286:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'INSTRUCTIONS' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:286:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'INSTRUCTIONS' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:286:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'INSTRUCTIONS'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:286:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:287:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:287:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:288:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEncodingReferenceDefault537); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getEncodingReferenceDefaultAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getEncodingReferenceDefaultRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,18,FOLLOW_18_in_ruleEncodingReferenceDefault554); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getEncodingReferenceDefaultAccess().getINSTRUCTIONSKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEncodingReferenceDefault"


    // $ANTLR start "entryRuleTagDefault"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:316:1: entryRuleTagDefault returns [String current=null] : iv_ruleTagDefault= ruleTagDefault EOF ;
    public final String entryRuleTagDefault() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleTagDefault = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:317:2: (iv_ruleTagDefault= ruleTagDefault EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:318:2: iv_ruleTagDefault= ruleTagDefault EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTagDefaultRule()); 
            }
            pushFollow(FOLLOW_ruleTagDefault_in_entryRuleTagDefault591);
            iv_ruleTagDefault=ruleTagDefault();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTagDefault.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTagDefault602); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTagDefault"


    // $ANTLR start "ruleTagDefault"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:325:1: ruleTagDefault returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= 'EXPLICIT' | kw= 'IMPLICIT' | kw= 'AUTOMATIC' ) kw= 'TAGS' ) ;
    public final AntlrDatatypeRuleToken ruleTagDefault() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:328:28: ( ( (kw= 'EXPLICIT' | kw= 'IMPLICIT' | kw= 'AUTOMATIC' ) kw= 'TAGS' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:329:1: ( (kw= 'EXPLICIT' | kw= 'IMPLICIT' | kw= 'AUTOMATIC' ) kw= 'TAGS' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:329:1: ( (kw= 'EXPLICIT' | kw= 'IMPLICIT' | kw= 'AUTOMATIC' ) kw= 'TAGS' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:329:2: (kw= 'EXPLICIT' | kw= 'IMPLICIT' | kw= 'AUTOMATIC' ) kw= 'TAGS'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:329:2: (kw= 'EXPLICIT' | kw= 'IMPLICIT' | kw= 'AUTOMATIC' )
            int alt6=3;
            switch ( input.LA(1) ) {
            case 19:
                {
                alt6=1;
                }
                break;
            case 20:
                {
                alt6=2;
                }
                break;
            case 21:
                {
                alt6=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 6, 0, input);

                throw nvae;
            }

            switch (alt6) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:330:2: kw= 'EXPLICIT'
                    {
                    kw=(Token)match(input,19,FOLLOW_19_in_ruleTagDefault641); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getTagDefaultAccess().getEXPLICITKeyword_0_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:337:2: kw= 'IMPLICIT'
                    {
                    kw=(Token)match(input,20,FOLLOW_20_in_ruleTagDefault660); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getTagDefaultAccess().getIMPLICITKeyword_0_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:344:2: kw= 'AUTOMATIC'
                    {
                    kw=(Token)match(input,21,FOLLOW_21_in_ruleTagDefault679); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getTagDefaultAccess().getAUTOMATICKeyword_0_2()); 
                          
                    }

                    }
                    break;

            }

            kw=(Token)match(input,22,FOLLOW_22_in_ruleTagDefault693); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getTagDefaultAccess().getTAGSKeyword_1()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTagDefault"


    // $ANTLR start "entryRuleExtensionDefault"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:363:1: entryRuleExtensionDefault returns [String current=null] : iv_ruleExtensionDefault= ruleExtensionDefault EOF ;
    public final String entryRuleExtensionDefault() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleExtensionDefault = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:364:2: (iv_ruleExtensionDefault= ruleExtensionDefault EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:365:2: iv_ruleExtensionDefault= ruleExtensionDefault EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExtensionDefaultRule()); 
            }
            pushFollow(FOLLOW_ruleExtensionDefault_in_entryRuleExtensionDefault734);
            iv_ruleExtensionDefault=ruleExtensionDefault();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExtensionDefault.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionDefault745); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionDefault"


    // $ANTLR start "ruleExtensionDefault"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:372:1: ruleExtensionDefault returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'EXTENSIBILITY IMPLIED' ;
    public final AntlrDatatypeRuleToken ruleExtensionDefault() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:375:28: (kw= 'EXTENSIBILITY IMPLIED' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:377:2: kw= 'EXTENSIBILITY IMPLIED'
            {
            kw=(Token)match(input,23,FOLLOW_23_in_ruleExtensionDefault782); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getExtensionDefaultAccess().getEXTENSIBILITYIMPLIEDKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionDefault"


    // $ANTLR start "entryRuleModuleBody"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:390:1: entryRuleModuleBody returns [EObject current=null] : iv_ruleModuleBody= ruleModuleBody EOF ;
    public final EObject entryRuleModuleBody() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModuleBody = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:391:2: (iv_ruleModuleBody= ruleModuleBody EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:392:2: iv_ruleModuleBody= ruleModuleBody EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getModuleBodyRule()); 
            }
            pushFollow(FOLLOW_ruleModuleBody_in_entryRuleModuleBody821);
            iv_ruleModuleBody=ruleModuleBody();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleModuleBody; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleModuleBody831); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModuleBody"


    // $ANTLR start "ruleModuleBody"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:399:1: ruleModuleBody returns [EObject current=null] : ( ( (lv_exports_0_0= ruleExports ) )* ( (lv_imports_1_0= ruleImports ) )* ( (lv_assignments_2_0= ruleAssignment ) )+ ) ;
    public final EObject ruleModuleBody() throws RecognitionException {
        EObject current = null;

        EObject lv_exports_0_0 = null;

        EObject lv_imports_1_0 = null;

        EObject lv_assignments_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:402:28: ( ( ( (lv_exports_0_0= ruleExports ) )* ( (lv_imports_1_0= ruleImports ) )* ( (lv_assignments_2_0= ruleAssignment ) )+ ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:403:1: ( ( (lv_exports_0_0= ruleExports ) )* ( (lv_imports_1_0= ruleImports ) )* ( (lv_assignments_2_0= ruleAssignment ) )+ )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:403:1: ( ( (lv_exports_0_0= ruleExports ) )* ( (lv_imports_1_0= ruleImports ) )* ( (lv_assignments_2_0= ruleAssignment ) )+ )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:403:2: ( (lv_exports_0_0= ruleExports ) )* ( (lv_imports_1_0= ruleImports ) )* ( (lv_assignments_2_0= ruleAssignment ) )+
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:403:2: ( (lv_exports_0_0= ruleExports ) )*
            loop7:
            do {
                int alt7=2;
                int LA7_0 = input.LA(1);

                if ( (LA7_0==24) ) {
                    alt7=1;
                }


                switch (alt7) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:404:1: (lv_exports_0_0= ruleExports )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:404:1: (lv_exports_0_0= ruleExports )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:405:3: lv_exports_0_0= ruleExports
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getModuleBodyAccess().getExportsExportsParserRuleCall_0_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleExports_in_ruleModuleBody877);
            	    lv_exports_0_0=ruleExports();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getModuleBodyRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"exports",
            	              		lv_exports_0_0, 
            	              		"Exports");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop7;
                }
            } while (true);

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:421:3: ( (lv_imports_1_0= ruleImports ) )*
            loop8:
            do {
                int alt8=2;
                int LA8_0 = input.LA(1);

                if ( (LA8_0==28) ) {
                    alt8=1;
                }


                switch (alt8) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:422:1: (lv_imports_1_0= ruleImports )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:422:1: (lv_imports_1_0= ruleImports )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:423:3: lv_imports_1_0= ruleImports
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getModuleBodyAccess().getImportsImportsParserRuleCall_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleImports_in_ruleModuleBody899);
            	    lv_imports_1_0=ruleImports();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getModuleBodyRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"imports",
            	              		lv_imports_1_0, 
            	              		"Imports");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    break loop8;
                }
            } while (true);

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:439:3: ( (lv_assignments_2_0= ruleAssignment ) )+
            int cnt9=0;
            loop9:
            do {
                int alt9=2;
                int LA9_0 = input.LA(1);

                if ( (LA9_0==RULE_ID) ) {
                    alt9=1;
                }


                switch (alt9) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:440:1: (lv_assignments_2_0= ruleAssignment )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:440:1: (lv_assignments_2_0= ruleAssignment )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:441:3: lv_assignments_2_0= ruleAssignment
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getModuleBodyAccess().getAssignmentsAssignmentParserRuleCall_2_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleAssignment_in_ruleModuleBody921);
            	    lv_assignments_2_0=ruleAssignment();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getModuleBodyRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"assignments",
            	              		lv_assignments_2_0, 
            	              		"Assignment");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt9 >= 1 ) break loop9;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(9, input);
                        throw eee;
                }
                cnt9++;
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModuleBody"


    // $ANTLR start "entryRuleExports"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:465:1: entryRuleExports returns [EObject current=null] : iv_ruleExports= ruleExports EOF ;
    public final EObject entryRuleExports() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExports = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:466:2: (iv_ruleExports= ruleExports EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:467:2: iv_ruleExports= ruleExports EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExportsRule()); 
            }
            pushFollow(FOLLOW_ruleExports_in_entryRuleExports958);
            iv_ruleExports=ruleExports();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExports; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExports968); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExports"


    // $ANTLR start "ruleExports"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:474:1: ruleExports returns [EObject current=null] : ( () otherlv_1= 'EXPORTS' ( ( ( (otherlv_2= RULE_ID ) ) (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )* ) | otherlv_5= 'ALL' ) otherlv_6= ';' ) ;
    public final EObject ruleExports() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:477:28: ( ( () otherlv_1= 'EXPORTS' ( ( ( (otherlv_2= RULE_ID ) ) (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )* ) | otherlv_5= 'ALL' ) otherlv_6= ';' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:478:1: ( () otherlv_1= 'EXPORTS' ( ( ( (otherlv_2= RULE_ID ) ) (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )* ) | otherlv_5= 'ALL' ) otherlv_6= ';' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:478:1: ( () otherlv_1= 'EXPORTS' ( ( ( (otherlv_2= RULE_ID ) ) (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )* ) | otherlv_5= 'ALL' ) otherlv_6= ';' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:478:2: () otherlv_1= 'EXPORTS' ( ( ( (otherlv_2= RULE_ID ) ) (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )* ) | otherlv_5= 'ALL' ) otherlv_6= ';'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:478:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:479:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getExportsAccess().getExportsAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,24,FOLLOW_24_in_ruleExports1014); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getExportsAccess().getEXPORTSKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:488:1: ( ( ( (otherlv_2= RULE_ID ) ) (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )* ) | otherlv_5= 'ALL' )
            int alt11=2;
            int LA11_0 = input.LA(1);

            if ( (LA11_0==RULE_ID) ) {
                alt11=1;
            }
            else if ( (LA11_0==26) ) {
                alt11=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 11, 0, input);

                throw nvae;
            }
            switch (alt11) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:488:2: ( ( (otherlv_2= RULE_ID ) ) (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )* )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:488:2: ( ( (otherlv_2= RULE_ID ) ) (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )* )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:488:3: ( (otherlv_2= RULE_ID ) ) (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )*
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:488:3: ( (otherlv_2= RULE_ID ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:489:1: (otherlv_2= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:489:1: (otherlv_2= RULE_ID )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:490:3: otherlv_2= RULE_ID
                    {
                    if ( state.backtracking==0 ) {

                      			if (current==null) {
                      	            current = createModelElement(grammarAccess.getExportsRule());
                      	        }
                              
                    }
                    otherlv_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExports1036); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      		newLeafNode(otherlv_2, grammarAccess.getExportsAccess().getSymbolsExportedAssignmentCrossReference_2_0_0_0()); 
                      	
                    }

                    }


                    }

                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:501:2: (otherlv_3= ',' ( (otherlv_4= RULE_ID ) ) )*
                    loop10:
                    do {
                        int alt10=2;
                        int LA10_0 = input.LA(1);

                        if ( (LA10_0==25) ) {
                            alt10=1;
                        }


                        switch (alt10) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:501:4: otherlv_3= ',' ( (otherlv_4= RULE_ID ) )
                    	    {
                    	    otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleExports1049); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_3, grammarAccess.getExportsAccess().getCommaKeyword_2_0_1_0());
                    	          
                    	    }
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:505:1: ( (otherlv_4= RULE_ID ) )
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:506:1: (otherlv_4= RULE_ID )
                    	    {
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:506:1: (otherlv_4= RULE_ID )
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:507:3: otherlv_4= RULE_ID
                    	    {
                    	    if ( state.backtracking==0 ) {

                    	      			if (current==null) {
                    	      	            current = createModelElement(grammarAccess.getExportsRule());
                    	      	        }
                    	              
                    	    }
                    	    otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleExports1069); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      		newLeafNode(otherlv_4, grammarAccess.getExportsAccess().getSymbolsExportedAssignmentCrossReference_2_0_1_1_0()); 
                    	      	
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop10;
                        }
                    } while (true);


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:519:7: otherlv_5= 'ALL'
                    {
                    otherlv_5=(Token)match(input,26,FOLLOW_26_in_ruleExports1090); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getExportsAccess().getALLKeyword_2_1());
                          
                    }

                    }
                    break;

            }

            otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleExports1103); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getExportsAccess().getSemicolonKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExports"


    // $ANTLR start "entryRuleImports"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:535:1: entryRuleImports returns [EObject current=null] : iv_ruleImports= ruleImports EOF ;
    public final EObject entryRuleImports() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleImports = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:536:2: (iv_ruleImports= ruleImports EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:537:2: iv_ruleImports= ruleImports EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getImportsRule()); 
            }
            pushFollow(FOLLOW_ruleImports_in_entryRuleImports1139);
            iv_ruleImports=ruleImports();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleImports; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleImports1149); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleImports"


    // $ANTLR start "ruleImports"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:544:1: ruleImports returns [EObject current=null] : (otherlv_0= 'IMPORTS' ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* otherlv_4= 'FROM' ( (lv_modulereference_5_0= RULE_ID ) ) otherlv_6= ';' ) ;
    public final EObject ruleImports() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token lv_modulereference_5_0=null;
        Token otherlv_6=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:547:28: ( (otherlv_0= 'IMPORTS' ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* otherlv_4= 'FROM' ( (lv_modulereference_5_0= RULE_ID ) ) otherlv_6= ';' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:548:1: (otherlv_0= 'IMPORTS' ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* otherlv_4= 'FROM' ( (lv_modulereference_5_0= RULE_ID ) ) otherlv_6= ';' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:548:1: (otherlv_0= 'IMPORTS' ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* otherlv_4= 'FROM' ( (lv_modulereference_5_0= RULE_ID ) ) otherlv_6= ';' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:548:3: otherlv_0= 'IMPORTS' ( (otherlv_1= RULE_ID ) ) (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )* otherlv_4= 'FROM' ( (lv_modulereference_5_0= RULE_ID ) ) otherlv_6= ';'
            {
            otherlv_0=(Token)match(input,28,FOLLOW_28_in_ruleImports1186); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getImportsAccess().getIMPORTSKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:552:1: ( (otherlv_1= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:553:1: (otherlv_1= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:553:1: (otherlv_1= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:554:3: otherlv_1= RULE_ID
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getImportsRule());
              	        }
                      
            }
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleImports1206); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		newLeafNode(otherlv_1, grammarAccess.getImportsAccess().getSymbolsImportedAssignmentCrossReference_1_0()); 
              	
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:565:2: (otherlv_2= ',' ( (otherlv_3= RULE_ID ) ) )*
            loop12:
            do {
                int alt12=2;
                int LA12_0 = input.LA(1);

                if ( (LA12_0==25) ) {
                    alt12=1;
                }


                switch (alt12) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:565:4: otherlv_2= ',' ( (otherlv_3= RULE_ID ) )
            	    {
            	    otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleImports1219); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_2, grammarAccess.getImportsAccess().getCommaKeyword_2_0());
            	          
            	    }
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:569:1: ( (otherlv_3= RULE_ID ) )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:570:1: (otherlv_3= RULE_ID )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:570:1: (otherlv_3= RULE_ID )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:571:3: otherlv_3= RULE_ID
            	    {
            	    if ( state.backtracking==0 ) {

            	      			if (current==null) {
            	      	            current = createModelElement(grammarAccess.getImportsRule());
            	      	        }
            	              
            	    }
            	    otherlv_3=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleImports1239); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      		newLeafNode(otherlv_3, grammarAccess.getImportsAccess().getSymbolsImportedAssignmentCrossReference_2_1_0()); 
            	      	
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop12;
                }
            } while (true);

            otherlv_4=(Token)match(input,29,FOLLOW_29_in_ruleImports1253); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getImportsAccess().getFROMKeyword_3());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:586:1: ( (lv_modulereference_5_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:587:1: (lv_modulereference_5_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:587:1: (lv_modulereference_5_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:588:3: lv_modulereference_5_0= RULE_ID
            {
            lv_modulereference_5_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleImports1270); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_modulereference_5_0, grammarAccess.getImportsAccess().getModulereferenceIDTerminalRuleCall_4_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getImportsRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"modulereference",
                      		lv_modulereference_5_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,27,FOLLOW_27_in_ruleImports1287); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getImportsAccess().getSemicolonKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleImports"


    // $ANTLR start "entryRuleDefinedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:616:1: entryRuleDefinedType returns [EObject current=null] : iv_ruleDefinedType= ruleDefinedType EOF ;
    public final EObject entryRuleDefinedType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDefinedType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:617:2: (iv_ruleDefinedType= ruleDefinedType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:618:2: iv_ruleDefinedType= ruleDefinedType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDefinedTypeRule()); 
            }
            pushFollow(FOLLOW_ruleDefinedType_in_entryRuleDefinedType1323);
            iv_ruleDefinedType=ruleDefinedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDefinedType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinedType1333); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDefinedType"


    // $ANTLR start "ruleDefinedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:625:1: ruleDefinedType returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
    public final EObject ruleDefinedType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:628:28: ( ( (otherlv_0= RULE_ID ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:629:1: ( (otherlv_0= RULE_ID ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:629:1: ( (otherlv_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:630:1: (otherlv_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:630:1: (otherlv_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:631:3: otherlv_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getDefinedTypeRule());
              	        }
                      
            }
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDefinedType1377); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		newLeafNode(otherlv_0, grammarAccess.getDefinedTypeAccess().getTargetTypeAssignmentCrossReference_0()); 
              	
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDefinedType"


    // $ANTLR start "entryRuleDefinedValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:650:1: entryRuleDefinedValue returns [EObject current=null] : iv_ruleDefinedValue= ruleDefinedValue EOF ;
    public final EObject entryRuleDefinedValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDefinedValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:651:2: (iv_ruleDefinedValue= ruleDefinedValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:652:2: iv_ruleDefinedValue= ruleDefinedValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDefinedValueRule()); 
            }
            pushFollow(FOLLOW_ruleDefinedValue_in_entryRuleDefinedValue1412);
            iv_ruleDefinedValue=ruleDefinedValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDefinedValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDefinedValue1422); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDefinedValue"


    // $ANTLR start "ruleDefinedValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:659:1: ruleDefinedValue returns [EObject current=null] : ( (otherlv_0= RULE_ID ) ) ;
    public final EObject ruleDefinedValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:662:28: ( ( (otherlv_0= RULE_ID ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:663:1: ( (otherlv_0= RULE_ID ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:663:1: ( (otherlv_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:664:1: (otherlv_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:664:1: (otherlv_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:665:3: otherlv_0= RULE_ID
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getDefinedValueRule());
              	        }
                      
            }
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleDefinedValue1466); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		newLeafNode(otherlv_0, grammarAccess.getDefinedValueAccess().getTargetValueAssignmentCrossReference_0()); 
              	
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDefinedValue"


    // $ANTLR start "entryRuleAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:684:1: entryRuleAssignment returns [EObject current=null] : iv_ruleAssignment= ruleAssignment EOF ;
    public final EObject entryRuleAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAssignment = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:685:2: (iv_ruleAssignment= ruleAssignment EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:686:2: iv_ruleAssignment= ruleAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleAssignment_in_entryRuleAssignment1501);
            iv_ruleAssignment=ruleAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAssignment1511); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAssignment"


    // $ANTLR start "ruleAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:693:1: ruleAssignment returns [EObject current=null] : (this_TypeAssignment_0= ruleTypeAssignment | this_ValueAssignment_1= ruleValueAssignment ) ;
    public final EObject ruleAssignment() throws RecognitionException {
        EObject current = null;

        EObject this_TypeAssignment_0 = null;

        EObject this_ValueAssignment_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:696:28: ( (this_TypeAssignment_0= ruleTypeAssignment | this_ValueAssignment_1= ruleValueAssignment ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:697:1: (this_TypeAssignment_0= ruleTypeAssignment | this_ValueAssignment_1= ruleValueAssignment )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:697:1: (this_TypeAssignment_0= ruleTypeAssignment | this_ValueAssignment_1= ruleValueAssignment )
            int alt13=2;
            int LA13_0 = input.LA(1);

            if ( (LA13_0==RULE_ID) ) {
                int LA13_1 = input.LA(2);

                if ( (LA13_1==RULE_ID||(LA13_1>=30 && LA13_1<=31)||LA13_1==36||LA13_1==38||LA13_1==42||LA13_1==44||LA13_1==46||LA13_1==65||(LA13_1>=67 && LA13_1<=84)) ) {
                    alt13=2;
                }
                else if ( (LA13_1==15) ) {
                    alt13=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 13, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 13, 0, input);

                throw nvae;
            }
            switch (alt13) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:698:5: this_TypeAssignment_0= ruleTypeAssignment
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAssignmentAccess().getTypeAssignmentParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTypeAssignment_in_ruleAssignment1558);
                    this_TypeAssignment_0=ruleTypeAssignment();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_TypeAssignment_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:708:5: this_ValueAssignment_1= ruleValueAssignment
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getAssignmentAccess().getValueAssignmentParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleValueAssignment_in_ruleAssignment1585);
                    this_ValueAssignment_1=ruleValueAssignment();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ValueAssignment_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAssignment"


    // $ANTLR start "entryRuleTypeAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:724:1: entryRuleTypeAssignment returns [EObject current=null] : iv_ruleTypeAssignment= ruleTypeAssignment EOF ;
    public final EObject entryRuleTypeAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeAssignment = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:725:2: (iv_ruleTypeAssignment= ruleTypeAssignment EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:726:2: iv_ruleTypeAssignment= ruleTypeAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTypeAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleTypeAssignment_in_entryRuleTypeAssignment1620);
            iv_ruleTypeAssignment=ruleTypeAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTypeAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeAssignment1630); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTypeAssignment"


    // $ANTLR start "ruleTypeAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:733:1: ruleTypeAssignment returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '::=' ( (lv_type_2_0= ruleType ) ) ( (lv_constraint_3_0= ruleConstraint ) )? ) ;
    public final EObject ruleTypeAssignment() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        EObject lv_type_2_0 = null;

        EObject lv_constraint_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:736:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '::=' ( (lv_type_2_0= ruleType ) ) ( (lv_constraint_3_0= ruleConstraint ) )? ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:737:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '::=' ( (lv_type_2_0= ruleType ) ) ( (lv_constraint_3_0= ruleConstraint ) )? )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:737:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '::=' ( (lv_type_2_0= ruleType ) ) ( (lv_constraint_3_0= ruleConstraint ) )? )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:737:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '::=' ( (lv_type_2_0= ruleType ) ) ( (lv_constraint_3_0= ruleConstraint ) )?
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:737:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:738:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:738:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:739:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTypeAssignment1672); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getTypeAssignmentAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getTypeAssignmentRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,15,FOLLOW_15_in_ruleTypeAssignment1689); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getTypeAssignmentAccess().getColonColonEqualsSignKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:759:1: ( (lv_type_2_0= ruleType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:760:1: (lv_type_2_0= ruleType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:760:1: (lv_type_2_0= ruleType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:761:3: lv_type_2_0= ruleType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTypeAssignmentAccess().getTypeTypeParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleType_in_ruleTypeAssignment1710);
            lv_type_2_0=ruleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTypeAssignmentRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_2_0, 
                      		"Type");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:777:2: ( (lv_constraint_3_0= ruleConstraint ) )?
            int alt14=2;
            int LA14_0 = input.LA(1);

            if ( (LA14_0==34) ) {
                alt14=1;
            }
            switch (alt14) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:778:1: (lv_constraint_3_0= ruleConstraint )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:778:1: (lv_constraint_3_0= ruleConstraint )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:779:3: lv_constraint_3_0= ruleConstraint
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTypeAssignmentAccess().getConstraintConstraintParserRuleCall_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleConstraint_in_ruleTypeAssignment1731);
                    lv_constraint_3_0=ruleConstraint();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTypeAssignmentRule());
                      	        }
                             		set(
                             			current, 
                             			"constraint",
                              		lv_constraint_3_0, 
                              		"Constraint");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTypeAssignment"


    // $ANTLR start "entryRuleValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:803:1: entryRuleValueAssignment returns [EObject current=null] : iv_ruleValueAssignment= ruleValueAssignment EOF ;
    public final EObject entryRuleValueAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleValueAssignment = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:804:2: (iv_ruleValueAssignment= ruleValueAssignment EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:805:2: iv_ruleValueAssignment= ruleValueAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getValueAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleValueAssignment_in_entryRuleValueAssignment1768);
            iv_ruleValueAssignment=ruleValueAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleValueAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleValueAssignment1778); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValueAssignment"


    // $ANTLR start "ruleValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:812:1: ruleValueAssignment returns [EObject current=null] : (this_SimpleValueAssignment_0= ruleSimpleValueAssignment | this_ChoiceValueAssignment_1= ruleChoiceValueAssignment | this_ObjectIdentifierValueAssignment_2= ruleObjectIdentifierValueAssignment | this_SequenceValueAssignment_3= ruleSequenceValueAssignment ) ;
    public final EObject ruleValueAssignment() throws RecognitionException {
        EObject current = null;

        EObject this_SimpleValueAssignment_0 = null;

        EObject this_ChoiceValueAssignment_1 = null;

        EObject this_ObjectIdentifierValueAssignment_2 = null;

        EObject this_SequenceValueAssignment_3 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:815:28: ( (this_SimpleValueAssignment_0= ruleSimpleValueAssignment | this_ChoiceValueAssignment_1= ruleChoiceValueAssignment | this_ObjectIdentifierValueAssignment_2= ruleObjectIdentifierValueAssignment | this_SequenceValueAssignment_3= ruleSequenceValueAssignment ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:816:1: (this_SimpleValueAssignment_0= ruleSimpleValueAssignment | this_ChoiceValueAssignment_1= ruleChoiceValueAssignment | this_ObjectIdentifierValueAssignment_2= ruleObjectIdentifierValueAssignment | this_SequenceValueAssignment_3= ruleSequenceValueAssignment )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:816:1: (this_SimpleValueAssignment_0= ruleSimpleValueAssignment | this_ChoiceValueAssignment_1= ruleChoiceValueAssignment | this_ObjectIdentifierValueAssignment_2= ruleObjectIdentifierValueAssignment | this_SequenceValueAssignment_3= ruleSequenceValueAssignment )
            int alt15=4;
            alt15 = dfa15.predict(input);
            switch (alt15) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:817:5: this_SimpleValueAssignment_0= ruleSimpleValueAssignment
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getValueAssignmentAccess().getSimpleValueAssignmentParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSimpleValueAssignment_in_ruleValueAssignment1825);
                    this_SimpleValueAssignment_0=ruleSimpleValueAssignment();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SimpleValueAssignment_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:827:5: this_ChoiceValueAssignment_1= ruleChoiceValueAssignment
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getValueAssignmentAccess().getChoiceValueAssignmentParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleChoiceValueAssignment_in_ruleValueAssignment1852);
                    this_ChoiceValueAssignment_1=ruleChoiceValueAssignment();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ChoiceValueAssignment_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:837:5: this_ObjectIdentifierValueAssignment_2= ruleObjectIdentifierValueAssignment
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getValueAssignmentAccess().getObjectIdentifierValueAssignmentParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleObjectIdentifierValueAssignment_in_ruleValueAssignment1879);
                    this_ObjectIdentifierValueAssignment_2=ruleObjectIdentifierValueAssignment();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ObjectIdentifierValueAssignment_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:847:5: this_SequenceValueAssignment_3= ruleSequenceValueAssignment
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getValueAssignmentAccess().getSequenceValueAssignmentParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSequenceValueAssignment_in_ruleValueAssignment1906);
                    this_SequenceValueAssignment_3=ruleSequenceValueAssignment();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SequenceValueAssignment_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValueAssignment"


    // $ANTLR start "entryRuleSimpleValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:863:1: entryRuleSimpleValueAssignment returns [EObject current=null] : iv_ruleSimpleValueAssignment= ruleSimpleValueAssignment EOF ;
    public final EObject entryRuleSimpleValueAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleValueAssignment = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:864:2: (iv_ruleSimpleValueAssignment= ruleSimpleValueAssignment EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:865:2: iv_ruleSimpleValueAssignment= ruleSimpleValueAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSimpleValueAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleSimpleValueAssignment_in_entryRuleSimpleValueAssignment1941);
            iv_ruleSimpleValueAssignment=ruleSimpleValueAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSimpleValueAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimpleValueAssignment1951); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimpleValueAssignment"


    // $ANTLR start "ruleSimpleValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:872:1: ruleSimpleValueAssignment returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleSimpleType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSimpleValue ) ) ) ;
    public final EObject ruleSimpleValueAssignment() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_2=null;
        EObject lv_type_1_0 = null;

        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:875:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleSimpleType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSimpleValue ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:876:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleSimpleType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSimpleValue ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:876:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleSimpleType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSimpleValue ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:876:2: ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleSimpleType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSimpleValue ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:876:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:877:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:877:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:878:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSimpleValueAssignment1993); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getSimpleValueAssignmentAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getSimpleValueAssignmentRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:894:2: ( (lv_type_1_0= ruleSimpleType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:895:1: (lv_type_1_0= ruleSimpleType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:895:1: (lv_type_1_0= ruleSimpleType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:896:3: lv_type_1_0= ruleSimpleType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSimpleValueAssignmentAccess().getTypeSimpleTypeParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleSimpleType_in_ruleSimpleValueAssignment2019);
            lv_type_1_0=ruleSimpleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSimpleValueAssignmentRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_1_0, 
                      		"SimpleType");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleSimpleValueAssignment2031); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getSimpleValueAssignmentAccess().getColonColonEqualsSignKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:916:1: ( (lv_value_3_0= ruleSimpleValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:917:1: (lv_value_3_0= ruleSimpleValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:917:1: (lv_value_3_0= ruleSimpleValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:918:3: lv_value_3_0= ruleSimpleValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSimpleValueAssignmentAccess().getValueSimpleValueParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleSimpleValue_in_ruleSimpleValueAssignment2052);
            lv_value_3_0=ruleSimpleValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSimpleValueAssignmentRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_3_0, 
                      		"SimpleValue");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimpleValueAssignment"


    // $ANTLR start "entryRuleChoiceValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:942:1: entryRuleChoiceValueAssignment returns [EObject current=null] : iv_ruleChoiceValueAssignment= ruleChoiceValueAssignment EOF ;
    public final EObject entryRuleChoiceValueAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChoiceValueAssignment = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:943:2: (iv_ruleChoiceValueAssignment= ruleChoiceValueAssignment EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:944:2: iv_ruleChoiceValueAssignment= ruleChoiceValueAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getChoiceValueAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleChoiceValueAssignment_in_entryRuleChoiceValueAssignment2088);
            iv_ruleChoiceValueAssignment=ruleChoiceValueAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleChoiceValueAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleChoiceValueAssignment2098); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleChoiceValueAssignment"


    // $ANTLR start "ruleChoiceValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:951:1: ruleChoiceValueAssignment returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleChoiceValue ) ) ) ;
    public final EObject ruleChoiceValueAssignment() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:954:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleChoiceValue ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:955:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleChoiceValue ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:955:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleChoiceValue ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:955:2: ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleChoiceValue ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:955:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:956:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:956:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:957:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChoiceValueAssignment2140); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getChoiceValueAssignmentAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getChoiceValueAssignmentRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:973:2: ( (otherlv_1= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:974:1: (otherlv_1= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:974:1: (otherlv_1= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:975:3: otherlv_1= RULE_ID
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getChoiceValueAssignmentRule());
              	        }
                      
            }
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChoiceValueAssignment2165); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		newLeafNode(otherlv_1, grammarAccess.getChoiceValueAssignmentAccess().getTypeTypeAssignmentCrossReference_1_0()); 
              	
            }

            }


            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleChoiceValueAssignment2177); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getChoiceValueAssignmentAccess().getColonColonEqualsSignKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:990:1: ( (lv_value_3_0= ruleChoiceValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:991:1: (lv_value_3_0= ruleChoiceValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:991:1: (lv_value_3_0= ruleChoiceValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:992:3: lv_value_3_0= ruleChoiceValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getChoiceValueAssignmentAccess().getValueChoiceValueParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleChoiceValue_in_ruleChoiceValueAssignment2198);
            lv_value_3_0=ruleChoiceValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getChoiceValueAssignmentRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_3_0, 
                      		"ChoiceValue");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleChoiceValueAssignment"


    // $ANTLR start "entryRuleObjectIdentifierValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1016:1: entryRuleObjectIdentifierValueAssignment returns [EObject current=null] : iv_ruleObjectIdentifierValueAssignment= ruleObjectIdentifierValueAssignment EOF ;
    public final EObject entryRuleObjectIdentifierValueAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleObjectIdentifierValueAssignment = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1017:2: (iv_ruleObjectIdentifierValueAssignment= ruleObjectIdentifierValueAssignment EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1018:2: iv_ruleObjectIdentifierValueAssignment= ruleObjectIdentifierValueAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getObjectIdentifierValueAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleObjectIdentifierValueAssignment_in_entryRuleObjectIdentifierValueAssignment2234);
            iv_ruleObjectIdentifierValueAssignment=ruleObjectIdentifierValueAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleObjectIdentifierValueAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleObjectIdentifierValueAssignment2244); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleObjectIdentifierValueAssignment"


    // $ANTLR start "ruleObjectIdentifierValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1025:1: ruleObjectIdentifierValueAssignment returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleObjectIdentifierType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleObjectIdentifierValue ) ) ) ;
    public final EObject ruleObjectIdentifierValueAssignment() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_2=null;
        EObject lv_type_1_0 = null;

        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1028:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleObjectIdentifierType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleObjectIdentifierValue ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1029:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleObjectIdentifierType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleObjectIdentifierValue ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1029:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleObjectIdentifierType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleObjectIdentifierValue ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1029:2: ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleObjectIdentifierType ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleObjectIdentifierValue ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1029:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1030:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1030:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1031:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleObjectIdentifierValueAssignment2286); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getObjectIdentifierValueAssignmentAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getObjectIdentifierValueAssignmentRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1047:2: ( (lv_type_1_0= ruleObjectIdentifierType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1048:1: (lv_type_1_0= ruleObjectIdentifierType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1048:1: (lv_type_1_0= ruleObjectIdentifierType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1049:3: lv_type_1_0= ruleObjectIdentifierType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getObjectIdentifierValueAssignmentAccess().getTypeObjectIdentifierTypeParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleObjectIdentifierType_in_ruleObjectIdentifierValueAssignment2312);
            lv_type_1_0=ruleObjectIdentifierType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getObjectIdentifierValueAssignmentRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_1_0, 
                      		"ObjectIdentifierType");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleObjectIdentifierValueAssignment2324); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getObjectIdentifierValueAssignmentAccess().getColonColonEqualsSignKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1069:1: ( (lv_value_3_0= ruleObjectIdentifierValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1070:1: (lv_value_3_0= ruleObjectIdentifierValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1070:1: (lv_value_3_0= ruleObjectIdentifierValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1071:3: lv_value_3_0= ruleObjectIdentifierValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getObjectIdentifierValueAssignmentAccess().getValueObjectIdentifierValueParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleObjectIdentifierValue_in_ruleObjectIdentifierValueAssignment2345);
            lv_value_3_0=ruleObjectIdentifierValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getObjectIdentifierValueAssignmentRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_3_0, 
                      		"ObjectIdentifierValue");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleObjectIdentifierValueAssignment"


    // $ANTLR start "entryRuleSequenceValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1095:1: entryRuleSequenceValueAssignment returns [EObject current=null] : iv_ruleSequenceValueAssignment= ruleSequenceValueAssignment EOF ;
    public final EObject entryRuleSequenceValueAssignment() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceValueAssignment = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1096:2: (iv_ruleSequenceValueAssignment= ruleSequenceValueAssignment EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1097:2: iv_ruleSequenceValueAssignment= ruleSequenceValueAssignment EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceValueAssignmentRule()); 
            }
            pushFollow(FOLLOW_ruleSequenceValueAssignment_in_entryRuleSequenceValueAssignment2381);
            iv_ruleSequenceValueAssignment=ruleSequenceValueAssignment();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceValueAssignment; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSequenceValueAssignment2391); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceValueAssignment"


    // $ANTLR start "ruleSequenceValueAssignment"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1104:1: ruleSequenceValueAssignment returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSequenceValue ) ) ) ;
    public final EObject ruleSequenceValueAssignment() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1107:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSequenceValue ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1108:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSequenceValue ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1108:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSequenceValue ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1108:2: ( (lv_name_0_0= RULE_ID ) ) ( (otherlv_1= RULE_ID ) ) otherlv_2= '::=' ( (lv_value_3_0= ruleSequenceValue ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1108:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1109:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1109:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1110:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSequenceValueAssignment2433); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getSequenceValueAssignmentAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getSequenceValueAssignmentRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1126:2: ( (otherlv_1= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1127:1: (otherlv_1= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1127:1: (otherlv_1= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1128:3: otherlv_1= RULE_ID
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getSequenceValueAssignmentRule());
              	        }
                      
            }
            otherlv_1=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSequenceValueAssignment2458); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		newLeafNode(otherlv_1, grammarAccess.getSequenceValueAssignmentAccess().getTypeTypeAssignmentCrossReference_1_0()); 
              	
            }

            }


            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleSequenceValueAssignment2470); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getSequenceValueAssignmentAccess().getColonColonEqualsSignKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1143:1: ( (lv_value_3_0= ruleSequenceValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1144:1: (lv_value_3_0= ruleSequenceValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1144:1: (lv_value_3_0= ruleSequenceValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1145:3: lv_value_3_0= ruleSequenceValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSequenceValueAssignmentAccess().getValueSequenceValueParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleSequenceValue_in_ruleSequenceValueAssignment2491);
            lv_value_3_0=ruleSequenceValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSequenceValueAssignmentRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_3_0, 
                      		"SequenceValue");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceValueAssignment"


    // $ANTLR start "entryRuleType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1169:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
    public final EObject entryRuleType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1170:2: (iv_ruleType= ruleType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1171:2: iv_ruleType= ruleType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTypeRule()); 
            }
            pushFollow(FOLLOW_ruleType_in_entryRuleType2527);
            iv_ruleType=ruleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleType2537); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1178:1: ruleType returns [EObject current=null] : (this_BuiltinType_0= ruleBuiltinType | this_ReferencedType_1= ruleReferencedType ) ;
    public final EObject ruleType() throws RecognitionException {
        EObject current = null;

        EObject this_BuiltinType_0 = null;

        EObject this_ReferencedType_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1181:28: ( (this_BuiltinType_0= ruleBuiltinType | this_ReferencedType_1= ruleReferencedType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1182:1: (this_BuiltinType_0= ruleBuiltinType | this_ReferencedType_1= ruleReferencedType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1182:1: (this_BuiltinType_0= ruleBuiltinType | this_ReferencedType_1= ruleReferencedType )
            int alt16=2;
            int LA16_0 = input.LA(1);

            if ( ((LA16_0>=30 && LA16_0<=31)||LA16_0==36||LA16_0==38||LA16_0==42||LA16_0==44||(LA16_0>=46 && LA16_0<=47)||(LA16_0>=58 && LA16_0<=60)||LA16_0==65||(LA16_0>=67 && LA16_0<=84)) ) {
                alt16=1;
            }
            else if ( (LA16_0==RULE_ID||(LA16_0>=85 && LA16_0<=87)) ) {
                alt16=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 16, 0, input);

                throw nvae;
            }
            switch (alt16) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1183:5: this_BuiltinType_0= ruleBuiltinType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTypeAccess().getBuiltinTypeParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleBuiltinType_in_ruleType2584);
                    this_BuiltinType_0=ruleBuiltinType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BuiltinType_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1193:5: this_ReferencedType_1= ruleReferencedType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getTypeAccess().getReferencedTypeParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleReferencedType_in_ruleType2611);
                    this_ReferencedType_1=ruleReferencedType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ReferencedType_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRuleBuiltinType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1209:1: entryRuleBuiltinType returns [EObject current=null] : iv_ruleBuiltinType= ruleBuiltinType EOF ;
    public final EObject entryRuleBuiltinType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBuiltinType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1210:2: (iv_ruleBuiltinType= ruleBuiltinType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1211:2: iv_ruleBuiltinType= ruleBuiltinType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBuiltinTypeRule()); 
            }
            pushFollow(FOLLOW_ruleBuiltinType_in_entryRuleBuiltinType2646);
            iv_ruleBuiltinType=ruleBuiltinType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBuiltinType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleBuiltinType2656); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBuiltinType"


    // $ANTLR start "ruleBuiltinType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1218:1: ruleBuiltinType returns [EObject current=null] : (this_SimpleType_0= ruleSimpleType | this_ContainerType_1= ruleContainerType | this_PrefixedType_2= rulePrefixedType ) ;
    public final EObject ruleBuiltinType() throws RecognitionException {
        EObject current = null;

        EObject this_SimpleType_0 = null;

        EObject this_ContainerType_1 = null;

        EObject this_PrefixedType_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1221:28: ( (this_SimpleType_0= ruleSimpleType | this_ContainerType_1= ruleContainerType | this_PrefixedType_2= rulePrefixedType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1222:1: (this_SimpleType_0= ruleSimpleType | this_ContainerType_1= ruleContainerType | this_PrefixedType_2= rulePrefixedType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1222:1: (this_SimpleType_0= ruleSimpleType | this_ContainerType_1= ruleContainerType | this_PrefixedType_2= rulePrefixedType )
            int alt17=3;
            switch ( input.LA(1) ) {
            case 30:
            case 31:
            case 36:
            case 38:
            case 42:
            case 44:
            case 46:
            case 65:
            case 67:
            case 68:
            case 69:
            case 70:
            case 71:
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
            case 77:
            case 78:
            case 79:
            case 80:
            case 81:
            case 82:
            case 83:
            case 84:
                {
                alt17=1;
                }
                break;
            case 47:
            case 58:
            case 59:
                {
                alt17=2;
                }
                break;
            case 60:
                {
                alt17=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 17, 0, input);

                throw nvae;
            }

            switch (alt17) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1223:5: this_SimpleType_0= ruleSimpleType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBuiltinTypeAccess().getSimpleTypeParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSimpleType_in_ruleBuiltinType2703);
                    this_SimpleType_0=ruleSimpleType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SimpleType_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1233:5: this_ContainerType_1= ruleContainerType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBuiltinTypeAccess().getContainerTypeParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleContainerType_in_ruleBuiltinType2730);
                    this_ContainerType_1=ruleContainerType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ContainerType_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1243:5: this_PrefixedType_2= rulePrefixedType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBuiltinTypeAccess().getPrefixedTypeParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_rulePrefixedType_in_ruleBuiltinType2757);
                    this_PrefixedType_2=rulePrefixedType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PrefixedType_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBuiltinType"


    // $ANTLR start "entryRuleSimpleType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1259:1: entryRuleSimpleType returns [EObject current=null] : iv_ruleSimpleType= ruleSimpleType EOF ;
    public final EObject entryRuleSimpleType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1260:2: (iv_ruleSimpleType= ruleSimpleType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1261:2: iv_ruleSimpleType= ruleSimpleType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSimpleTypeRule()); 
            }
            pushFollow(FOLLOW_ruleSimpleType_in_entryRuleSimpleType2792);
            iv_ruleSimpleType=ruleSimpleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSimpleType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimpleType2802); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimpleType"


    // $ANTLR start "ruleSimpleType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1268:1: ruleSimpleType returns [EObject current=null] : (this_BitStringType_0= ruleBitStringType | this_BooleanType_1= ruleBooleanType | this_CharacterStringType_2= ruleCharacterStringType | this_DateType_3= ruleDateType | this_DateTimeType_4= ruleDateTimeType | this_DurationType_5= ruleDurationType | this_EnumeratedType_6= ruleEnumeratedType | this_IntegerType_7= ruleIntegerType | this_NullType_8= ruleNullType | this_ObjectIdentifierType_9= ruleObjectIdentifierType | this_OctetStringType_10= ruleOctetStringType | this_RealType_11= ruleRealType | this_TimeType_12= ruleTimeType | this_TimeOfDayType_13= ruleTimeOfDayType ) ;
    public final EObject ruleSimpleType() throws RecognitionException {
        EObject current = null;

        EObject this_BitStringType_0 = null;

        EObject this_BooleanType_1 = null;

        EObject this_CharacterStringType_2 = null;

        EObject this_DateType_3 = null;

        EObject this_DateTimeType_4 = null;

        EObject this_DurationType_5 = null;

        EObject this_EnumeratedType_6 = null;

        EObject this_IntegerType_7 = null;

        EObject this_NullType_8 = null;

        EObject this_ObjectIdentifierType_9 = null;

        EObject this_OctetStringType_10 = null;

        EObject this_RealType_11 = null;

        EObject this_TimeType_12 = null;

        EObject this_TimeOfDayType_13 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1271:28: ( (this_BitStringType_0= ruleBitStringType | this_BooleanType_1= ruleBooleanType | this_CharacterStringType_2= ruleCharacterStringType | this_DateType_3= ruleDateType | this_DateTimeType_4= ruleDateTimeType | this_DurationType_5= ruleDurationType | this_EnumeratedType_6= ruleEnumeratedType | this_IntegerType_7= ruleIntegerType | this_NullType_8= ruleNullType | this_ObjectIdentifierType_9= ruleObjectIdentifierType | this_OctetStringType_10= ruleOctetStringType | this_RealType_11= ruleRealType | this_TimeType_12= ruleTimeType | this_TimeOfDayType_13= ruleTimeOfDayType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1272:1: (this_BitStringType_0= ruleBitStringType | this_BooleanType_1= ruleBooleanType | this_CharacterStringType_2= ruleCharacterStringType | this_DateType_3= ruleDateType | this_DateTimeType_4= ruleDateTimeType | this_DurationType_5= ruleDurationType | this_EnumeratedType_6= ruleEnumeratedType | this_IntegerType_7= ruleIntegerType | this_NullType_8= ruleNullType | this_ObjectIdentifierType_9= ruleObjectIdentifierType | this_OctetStringType_10= ruleOctetStringType | this_RealType_11= ruleRealType | this_TimeType_12= ruleTimeType | this_TimeOfDayType_13= ruleTimeOfDayType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1272:1: (this_BitStringType_0= ruleBitStringType | this_BooleanType_1= ruleBooleanType | this_CharacterStringType_2= ruleCharacterStringType | this_DateType_3= ruleDateType | this_DateTimeType_4= ruleDateTimeType | this_DurationType_5= ruleDurationType | this_EnumeratedType_6= ruleEnumeratedType | this_IntegerType_7= ruleIntegerType | this_NullType_8= ruleNullType | this_ObjectIdentifierType_9= ruleObjectIdentifierType | this_OctetStringType_10= ruleOctetStringType | this_RealType_11= ruleRealType | this_TimeType_12= ruleTimeType | this_TimeOfDayType_13= ruleTimeOfDayType )
            int alt18=14;
            switch ( input.LA(1) ) {
            case 42:
                {
                alt18=1;
                }
                break;
            case 30:
                {
                alt18=2;
                }
                break;
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
            case 77:
            case 78:
            case 79:
            case 80:
            case 81:
            case 82:
            case 83:
            case 84:
                {
                alt18=3;
                }
                break;
            case 68:
                {
                alt18=4;
                }
                break;
            case 70:
                {
                alt18=5;
                }
                break;
            case 71:
                {
                alt18=6;
                }
                break;
            case 36:
                {
                alt18=7;
                }
                break;
            case 31:
                {
                alt18=8;
                }
                break;
            case 46:
                {
                alt18=9;
                }
                break;
            case 65:
                {
                alt18=10;
                }
                break;
            case 44:
                {
                alt18=11;
                }
                break;
            case 38:
                {
                alt18=12;
                }
                break;
            case 67:
                {
                alt18=13;
                }
                break;
            case 69:
                {
                alt18=14;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 18, 0, input);

                throw nvae;
            }

            switch (alt18) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1273:5: this_BitStringType_0= ruleBitStringType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getBitStringTypeParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleBitStringType_in_ruleSimpleType2849);
                    this_BitStringType_0=ruleBitStringType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BitStringType_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1283:5: this_BooleanType_1= ruleBooleanType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getBooleanTypeParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleBooleanType_in_ruleSimpleType2876);
                    this_BooleanType_1=ruleBooleanType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BooleanType_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1293:5: this_CharacterStringType_2= ruleCharacterStringType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getCharacterStringTypeParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleCharacterStringType_in_ruleSimpleType2903);
                    this_CharacterStringType_2=ruleCharacterStringType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_CharacterStringType_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1303:5: this_DateType_3= ruleDateType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getDateTypeParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDateType_in_ruleSimpleType2930);
                    this_DateType_3=ruleDateType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DateType_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1313:5: this_DateTimeType_4= ruleDateTimeType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getDateTimeTypeParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDateTimeType_in_ruleSimpleType2957);
                    this_DateTimeType_4=ruleDateTimeType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DateTimeType_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1323:5: this_DurationType_5= ruleDurationType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getDurationTypeParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDurationType_in_ruleSimpleType2984);
                    this_DurationType_5=ruleDurationType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DurationType_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1333:5: this_EnumeratedType_6= ruleEnumeratedType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getEnumeratedTypeParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_ruleEnumeratedType_in_ruleSimpleType3011);
                    this_EnumeratedType_6=ruleEnumeratedType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_EnumeratedType_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1343:5: this_IntegerType_7= ruleIntegerType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getIntegerTypeParserRuleCall_7()); 
                          
                    }
                    pushFollow(FOLLOW_ruleIntegerType_in_ruleSimpleType3038);
                    this_IntegerType_7=ruleIntegerType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IntegerType_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 9 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1353:5: this_NullType_8= ruleNullType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getNullTypeParserRuleCall_8()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNullType_in_ruleSimpleType3065);
                    this_NullType_8=ruleNullType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NullType_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1363:5: this_ObjectIdentifierType_9= ruleObjectIdentifierType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getObjectIdentifierTypeParserRuleCall_9()); 
                          
                    }
                    pushFollow(FOLLOW_ruleObjectIdentifierType_in_ruleSimpleType3092);
                    this_ObjectIdentifierType_9=ruleObjectIdentifierType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ObjectIdentifierType_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 11 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1373:5: this_OctetStringType_10= ruleOctetStringType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getOctetStringTypeParserRuleCall_10()); 
                          
                    }
                    pushFollow(FOLLOW_ruleOctetStringType_in_ruleSimpleType3119);
                    this_OctetStringType_10=ruleOctetStringType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_OctetStringType_10; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 12 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1383:5: this_RealType_11= ruleRealType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getRealTypeParserRuleCall_11()); 
                          
                    }
                    pushFollow(FOLLOW_ruleRealType_in_ruleSimpleType3146);
                    this_RealType_11=ruleRealType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_RealType_11; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 13 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1393:5: this_TimeType_12= ruleTimeType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getTimeTypeParserRuleCall_12()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTimeType_in_ruleSimpleType3173);
                    this_TimeType_12=ruleTimeType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_TimeType_12; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 14 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1403:5: this_TimeOfDayType_13= ruleTimeOfDayType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleTypeAccess().getTimeOfDayTypeParserRuleCall_13()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTimeOfDayType_in_ruleSimpleType3200);
                    this_TimeOfDayType_13=ruleTimeOfDayType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_TimeOfDayType_13; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimpleType"


    // $ANTLR start "entryRuleContainerType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1419:1: entryRuleContainerType returns [EObject current=null] : iv_ruleContainerType= ruleContainerType EOF ;
    public final EObject entryRuleContainerType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContainerType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1420:2: (iv_ruleContainerType= ruleContainerType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1421:2: iv_ruleContainerType= ruleContainerType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getContainerTypeRule()); 
            }
            pushFollow(FOLLOW_ruleContainerType_in_entryRuleContainerType3235);
            iv_ruleContainerType=ruleContainerType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleContainerType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleContainerType3245); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleContainerType"


    // $ANTLR start "ruleContainerType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1428:1: ruleContainerType returns [EObject current=null] : (this_ChoiceType_0= ruleChoiceType | this_SequenceType_1= ruleSequenceType | this_SequenceOfType_2= ruleSequenceOfType | this_SetType_3= ruleSetType | this_SetOfType_4= ruleSetOfType ) ;
    public final EObject ruleContainerType() throws RecognitionException {
        EObject current = null;

        EObject this_ChoiceType_0 = null;

        EObject this_SequenceType_1 = null;

        EObject this_SequenceOfType_2 = null;

        EObject this_SetType_3 = null;

        EObject this_SetOfType_4 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1431:28: ( (this_ChoiceType_0= ruleChoiceType | this_SequenceType_1= ruleSequenceType | this_SequenceOfType_2= ruleSequenceOfType | this_SetType_3= ruleSetType | this_SetOfType_4= ruleSetOfType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1432:1: (this_ChoiceType_0= ruleChoiceType | this_SequenceType_1= ruleSequenceType | this_SequenceOfType_2= ruleSequenceOfType | this_SetType_3= ruleSetType | this_SetOfType_4= ruleSetOfType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1432:1: (this_ChoiceType_0= ruleChoiceType | this_SequenceType_1= ruleSequenceType | this_SequenceOfType_2= ruleSequenceOfType | this_SetType_3= ruleSetType | this_SetOfType_4= ruleSetOfType )
            int alt19=5;
            switch ( input.LA(1) ) {
            case 59:
                {
                alt19=1;
                }
                break;
            case 47:
                {
                int LA19_2 = input.LA(2);

                if ( (LA19_2==34||LA19_2==54) ) {
                    alt19=3;
                }
                else if ( (LA19_2==32) ) {
                    alt19=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 19, 2, input);

                    throw nvae;
                }
                }
                break;
            case 58:
                {
                int LA19_3 = input.LA(2);

                if ( (LA19_3==32) ) {
                    alt19=4;
                }
                else if ( (LA19_3==34||LA19_3==54) ) {
                    alt19=5;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 19, 3, input);

                    throw nvae;
                }
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 19, 0, input);

                throw nvae;
            }

            switch (alt19) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1433:5: this_ChoiceType_0= ruleChoiceType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getContainerTypeAccess().getChoiceTypeParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleChoiceType_in_ruleContainerType3292);
                    this_ChoiceType_0=ruleChoiceType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ChoiceType_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1443:5: this_SequenceType_1= ruleSequenceType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getContainerTypeAccess().getSequenceTypeParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSequenceType_in_ruleContainerType3319);
                    this_SequenceType_1=ruleSequenceType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SequenceType_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1453:5: this_SequenceOfType_2= ruleSequenceOfType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getContainerTypeAccess().getSequenceOfTypeParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSequenceOfType_in_ruleContainerType3346);
                    this_SequenceOfType_2=ruleSequenceOfType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SequenceOfType_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1463:5: this_SetType_3= ruleSetType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getContainerTypeAccess().getSetTypeParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSetType_in_ruleContainerType3373);
                    this_SetType_3=ruleSetType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SetType_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1473:5: this_SetOfType_4= ruleSetOfType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getContainerTypeAccess().getSetOfTypeParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSetOfType_in_ruleContainerType3400);
                    this_SetOfType_4=ruleSetOfType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SetOfType_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleContainerType"


    // $ANTLR start "entryRuleReferencedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1489:1: entryRuleReferencedType returns [EObject current=null] : iv_ruleReferencedType= ruleReferencedType EOF ;
    public final EObject entryRuleReferencedType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReferencedType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1490:2: (iv_ruleReferencedType= ruleReferencedType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1491:2: iv_ruleReferencedType= ruleReferencedType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getReferencedTypeRule()); 
            }
            pushFollow(FOLLOW_ruleReferencedType_in_entryRuleReferencedType3435);
            iv_ruleReferencedType=ruleReferencedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleReferencedType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleReferencedType3445); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReferencedType"


    // $ANTLR start "ruleReferencedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1498:1: ruleReferencedType returns [EObject current=null] : (this_DefinedType_0= ruleDefinedType | this_UsefulType_1= ruleUsefulType ) ;
    public final EObject ruleReferencedType() throws RecognitionException {
        EObject current = null;

        EObject this_DefinedType_0 = null;

        EObject this_UsefulType_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1501:28: ( (this_DefinedType_0= ruleDefinedType | this_UsefulType_1= ruleUsefulType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1502:1: (this_DefinedType_0= ruleDefinedType | this_UsefulType_1= ruleUsefulType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1502:1: (this_DefinedType_0= ruleDefinedType | this_UsefulType_1= ruleUsefulType )
            int alt20=2;
            int LA20_0 = input.LA(1);

            if ( (LA20_0==RULE_ID) ) {
                alt20=1;
            }
            else if ( ((LA20_0>=85 && LA20_0<=87)) ) {
                alt20=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 20, 0, input);

                throw nvae;
            }
            switch (alt20) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1503:5: this_DefinedType_0= ruleDefinedType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getReferencedTypeAccess().getDefinedTypeParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDefinedType_in_ruleReferencedType3492);
                    this_DefinedType_0=ruleDefinedType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DefinedType_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1513:5: this_UsefulType_1= ruleUsefulType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getReferencedTypeAccess().getUsefulTypeParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleUsefulType_in_ruleReferencedType3519);
                    this_UsefulType_1=ruleUsefulType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_UsefulType_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReferencedType"


    // $ANTLR start "entryRuleNamedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1529:1: entryRuleNamedType returns [EObject current=null] : iv_ruleNamedType= ruleNamedType EOF ;
    public final EObject entryRuleNamedType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1530:2: (iv_ruleNamedType= ruleNamedType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1531:2: iv_ruleNamedType= ruleNamedType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamedTypeRule()); 
            }
            pushFollow(FOLLOW_ruleNamedType_in_entryRuleNamedType3554);
            iv_ruleNamedType=ruleNamedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamedType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamedType3564); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedType"


    // $ANTLR start "ruleNamedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1538:1: ruleNamedType returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_constraint_2_0= ruleConstraint ) )? ) ;
    public final EObject ruleNamedType() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        EObject lv_type_1_0 = null;

        EObject lv_constraint_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1541:28: ( ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_constraint_2_0= ruleConstraint ) )? ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1542:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_constraint_2_0= ruleConstraint ) )? )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1542:1: ( ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_constraint_2_0= ruleConstraint ) )? )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1542:2: ( (lv_name_0_0= RULE_ID ) ) ( (lv_type_1_0= ruleType ) ) ( (lv_constraint_2_0= ruleConstraint ) )?
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1542:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1543:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1543:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1544:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNamedType3606); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getNamedTypeAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getNamedTypeRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1560:2: ( (lv_type_1_0= ruleType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1561:1: (lv_type_1_0= ruleType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1561:1: (lv_type_1_0= ruleType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1562:3: lv_type_1_0= ruleType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamedTypeAccess().getTypeTypeParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleType_in_ruleNamedType3632);
            lv_type_1_0=ruleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_1_0, 
                      		"Type");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1578:2: ( (lv_constraint_2_0= ruleConstraint ) )?
            int alt21=2;
            int LA21_0 = input.LA(1);

            if ( (LA21_0==34) ) {
                alt21=1;
            }
            switch (alt21) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1579:1: (lv_constraint_2_0= ruleConstraint )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1579:1: (lv_constraint_2_0= ruleConstraint )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1580:3: lv_constraint_2_0= ruleConstraint
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNamedTypeAccess().getConstraintConstraintParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleConstraint_in_ruleNamedType3653);
                    lv_constraint_2_0=ruleConstraint();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNamedTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"constraint",
                              		lv_constraint_2_0, 
                              		"Constraint");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedType"


    // $ANTLR start "entryRuleValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1604:1: entryRuleValue returns [EObject current=null] : iv_ruleValue= ruleValue EOF ;
    public final EObject entryRuleValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1605:2: (iv_ruleValue= ruleValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1606:2: iv_ruleValue= ruleValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getValueRule()); 
            }
            pushFollow(FOLLOW_ruleValue_in_entryRuleValue3690);
            iv_ruleValue=ruleValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleValue3700); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValue"


    // $ANTLR start "ruleValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1613:1: ruleValue returns [EObject current=null] : (this_BuiltinValue_0= ruleBuiltinValue | this_ReferencedValue_1= ruleReferencedValue ) ;
    public final EObject ruleValue() throws RecognitionException {
        EObject current = null;

        EObject this_BuiltinValue_0 = null;

        EObject this_ReferencedValue_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1616:28: ( (this_BuiltinValue_0= ruleBuiltinValue | this_ReferencedValue_1= ruleReferencedValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1617:1: (this_BuiltinValue_0= ruleBuiltinValue | this_ReferencedValue_1= ruleReferencedValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1617:1: (this_BuiltinValue_0= ruleBuiltinValue | this_ReferencedValue_1= ruleReferencedValue )
            int alt22=2;
            int LA22_0 = input.LA(1);

            if ( ((LA22_0>=RULE_LONG && LA22_0<=RULE_STRING)||LA22_0==32||LA22_0==45||LA22_0==99||(LA22_0>=101 && LA22_0<=105)) ) {
                alt22=1;
            }
            else if ( (LA22_0==RULE_ID) ) {
                int LA22_2 = input.LA(2);

                if ( (LA22_2==EOF||(LA22_2>=RULE_ID && LA22_2<=RULE_LONG)||LA22_2==17||LA22_2==25||(LA22_2>=30 && LA22_2<=31)||LA22_2==33||(LA22_2>=35 && LA22_2<=38)||LA22_2==42||LA22_2==44||(LA22_2>=46 && LA22_2<=47)||(LA22_2>=49 && LA22_2<=50)||LA22_2==53||(LA22_2>=58 && LA22_2<=60)||LA22_2==65||(LA22_2>=67 && LA22_2<=92)) ) {
                    alt22=2;
                }
                else if ( (LA22_2==48) ) {
                    alt22=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 22, 2, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 22, 0, input);

                throw nvae;
            }
            switch (alt22) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1618:5: this_BuiltinValue_0= ruleBuiltinValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getValueAccess().getBuiltinValueParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleBuiltinValue_in_ruleValue3747);
                    this_BuiltinValue_0=ruleBuiltinValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BuiltinValue_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1628:5: this_ReferencedValue_1= ruleReferencedValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getValueAccess().getReferencedValueParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleReferencedValue_in_ruleValue3774);
                    this_ReferencedValue_1=ruleReferencedValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ReferencedValue_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValue"


    // $ANTLR start "entryRuleBuiltinValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1644:1: entryRuleBuiltinValue returns [EObject current=null] : iv_ruleBuiltinValue= ruleBuiltinValue EOF ;
    public final EObject entryRuleBuiltinValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBuiltinValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1645:2: (iv_ruleBuiltinValue= ruleBuiltinValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1646:2: iv_ruleBuiltinValue= ruleBuiltinValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBuiltinValueRule()); 
            }
            pushFollow(FOLLOW_ruleBuiltinValue_in_entryRuleBuiltinValue3809);
            iv_ruleBuiltinValue=ruleBuiltinValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBuiltinValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleBuiltinValue3819); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBuiltinValue"


    // $ANTLR start "ruleBuiltinValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1653:1: ruleBuiltinValue returns [EObject current=null] : (this_SimpleValue_0= ruleSimpleValue | this_ContainerValue_1= ruleContainerValue ) ;
    public final EObject ruleBuiltinValue() throws RecognitionException {
        EObject current = null;

        EObject this_SimpleValue_0 = null;

        EObject this_ContainerValue_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1656:28: ( (this_SimpleValue_0= ruleSimpleValue | this_ContainerValue_1= ruleContainerValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1657:1: (this_SimpleValue_0= ruleSimpleValue | this_ContainerValue_1= ruleContainerValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1657:1: (this_SimpleValue_0= ruleSimpleValue | this_ContainerValue_1= ruleContainerValue )
            int alt23=2;
            int LA23_0 = input.LA(1);

            if ( ((LA23_0>=RULE_LONG && LA23_0<=RULE_STRING)||LA23_0==32||LA23_0==45||LA23_0==99||(LA23_0>=101 && LA23_0<=105)) ) {
                alt23=1;
            }
            else if ( (LA23_0==RULE_ID) ) {
                alt23=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 23, 0, input);

                throw nvae;
            }
            switch (alt23) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1658:5: this_SimpleValue_0= ruleSimpleValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBuiltinValueAccess().getSimpleValueParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSimpleValue_in_ruleBuiltinValue3866);
                    this_SimpleValue_0=ruleSimpleValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SimpleValue_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1668:5: this_ContainerValue_1= ruleContainerValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getBuiltinValueAccess().getContainerValueParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleContainerValue_in_ruleBuiltinValue3893);
                    this_ContainerValue_1=ruleContainerValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ContainerValue_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBuiltinValue"


    // $ANTLR start "entryRuleSimpleValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1684:1: entryRuleSimpleValue returns [EObject current=null] : iv_ruleSimpleValue= ruleSimpleValue EOF ;
    public final EObject entryRuleSimpleValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSimpleValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1685:2: (iv_ruleSimpleValue= ruleSimpleValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1686:2: iv_ruleSimpleValue= ruleSimpleValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSimpleValueRule()); 
            }
            pushFollow(FOLLOW_ruleSimpleValue_in_entryRuleSimpleValue3928);
            iv_ruleSimpleValue=ruleSimpleValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSimpleValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSimpleValue3938); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSimpleValue"


    // $ANTLR start "ruleSimpleValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1693:1: ruleSimpleValue returns [EObject current=null] : (this_BooleanValue_0= ruleBooleanValue | this_CharacterStringValue_1= ruleCharacterStringValue | this_IntegerValue_2= ruleIntegerValue | this_OctetStringValue_3= ruleOctetStringValue | this_RealValue_4= ruleRealValue ) ;
    public final EObject ruleSimpleValue() throws RecognitionException {
        EObject current = null;

        EObject this_BooleanValue_0 = null;

        EObject this_CharacterStringValue_1 = null;

        EObject this_IntegerValue_2 = null;

        EObject this_OctetStringValue_3 = null;

        EObject this_RealValue_4 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1696:28: ( (this_BooleanValue_0= ruleBooleanValue | this_CharacterStringValue_1= ruleCharacterStringValue | this_IntegerValue_2= ruleIntegerValue | this_OctetStringValue_3= ruleOctetStringValue | this_RealValue_4= ruleRealValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1697:1: (this_BooleanValue_0= ruleBooleanValue | this_CharacterStringValue_1= ruleCharacterStringValue | this_IntegerValue_2= ruleIntegerValue | this_OctetStringValue_3= ruleOctetStringValue | this_RealValue_4= ruleRealValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1697:1: (this_BooleanValue_0= ruleBooleanValue | this_CharacterStringValue_1= ruleCharacterStringValue | this_IntegerValue_2= ruleIntegerValue | this_OctetStringValue_3= ruleOctetStringValue | this_RealValue_4= ruleRealValue )
            int alt24=5;
            switch ( input.LA(1) ) {
            case 104:
            case 105:
                {
                alt24=1;
                }
                break;
            case RULE_STRING:
                {
                alt24=2;
                }
                break;
            case 99:
                {
                int LA24_3 = input.LA(2);

                if ( (LA24_3==RULE_LONG) ) {
                    int LA24_4 = input.LA(3);

                    if ( (LA24_4==EOF||(LA24_4>=RULE_ID && LA24_4<=RULE_LONG)||LA24_4==17||LA24_4==25||(LA24_4>=30 && LA24_4<=31)||LA24_4==33||(LA24_4>=35 && LA24_4<=38)||LA24_4==42||LA24_4==44||(LA24_4>=46 && LA24_4<=47)||(LA24_4>=49 && LA24_4<=50)||LA24_4==53||(LA24_4>=58 && LA24_4<=60)||LA24_4==65||(LA24_4>=67 && LA24_4<=92)) ) {
                        alt24=3;
                    }
                    else if ( (LA24_4==100) ) {
                        alt24=5;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 24, 4, input);

                        throw nvae;
                    }
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 24, 3, input);

                    throw nvae;
                }
                }
                break;
            case RULE_LONG:
                {
                int LA24_4 = input.LA(2);

                if ( (LA24_4==EOF||(LA24_4>=RULE_ID && LA24_4<=RULE_LONG)||LA24_4==17||LA24_4==25||(LA24_4>=30 && LA24_4<=31)||LA24_4==33||(LA24_4>=35 && LA24_4<=38)||LA24_4==42||LA24_4==44||(LA24_4>=46 && LA24_4<=47)||(LA24_4>=49 && LA24_4<=50)||LA24_4==53||(LA24_4>=58 && LA24_4<=60)||LA24_4==65||(LA24_4>=67 && LA24_4<=92)) ) {
                    alt24=3;
                }
                else if ( (LA24_4==100) ) {
                    alt24=5;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 24, 4, input);

                    throw nvae;
                }
                }
                break;
            case RULE_B_STRING:
            case RULE_H_STRING:
            case 45:
                {
                alt24=4;
                }
                break;
            case 32:
            case 101:
            case 102:
            case 103:
                {
                alt24=5;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 24, 0, input);

                throw nvae;
            }

            switch (alt24) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1698:5: this_BooleanValue_0= ruleBooleanValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleValueAccess().getBooleanValueParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleBooleanValue_in_ruleSimpleValue3985);
                    this_BooleanValue_0=ruleBooleanValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BooleanValue_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1708:5: this_CharacterStringValue_1= ruleCharacterStringValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleValueAccess().getCharacterStringValueParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleCharacterStringValue_in_ruleSimpleValue4012);
                    this_CharacterStringValue_1=ruleCharacterStringValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_CharacterStringValue_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1718:5: this_IntegerValue_2= ruleIntegerValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleValueAccess().getIntegerValueParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleIntegerValue_in_ruleSimpleValue4039);
                    this_IntegerValue_2=ruleIntegerValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IntegerValue_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1728:5: this_OctetStringValue_3= ruleOctetStringValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleValueAccess().getOctetStringValueParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleOctetStringValue_in_ruleSimpleValue4066);
                    this_OctetStringValue_3=ruleOctetStringValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_OctetStringValue_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1738:5: this_RealValue_4= ruleRealValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSimpleValueAccess().getRealValueParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleRealValue_in_ruleSimpleValue4093);
                    this_RealValue_4=ruleRealValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_RealValue_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSimpleValue"


    // $ANTLR start "entryRuleContainerValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1754:1: entryRuleContainerValue returns [EObject current=null] : iv_ruleContainerValue= ruleContainerValue EOF ;
    public final EObject entryRuleContainerValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContainerValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1755:2: (iv_ruleContainerValue= ruleContainerValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1756:2: iv_ruleContainerValue= ruleContainerValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getContainerValueRule()); 
            }
            pushFollow(FOLLOW_ruleContainerValue_in_entryRuleContainerValue4128);
            iv_ruleContainerValue=ruleContainerValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleContainerValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleContainerValue4138); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleContainerValue"


    // $ANTLR start "ruleContainerValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1763:1: ruleContainerValue returns [EObject current=null] : this_ChoiceValue_0= ruleChoiceValue ;
    public final EObject ruleContainerValue() throws RecognitionException {
        EObject current = null;

        EObject this_ChoiceValue_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1766:28: (this_ChoiceValue_0= ruleChoiceValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1768:5: this_ChoiceValue_0= ruleChoiceValue
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getContainerValueAccess().getChoiceValueParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleChoiceValue_in_ruleContainerValue4184);
            this_ChoiceValue_0=ruleChoiceValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ChoiceValue_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleContainerValue"


    // $ANTLR start "entryRuleReferencedValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1784:1: entryRuleReferencedValue returns [EObject current=null] : iv_ruleReferencedValue= ruleReferencedValue EOF ;
    public final EObject entryRuleReferencedValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleReferencedValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1785:2: (iv_ruleReferencedValue= ruleReferencedValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1786:2: iv_ruleReferencedValue= ruleReferencedValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getReferencedValueRule()); 
            }
            pushFollow(FOLLOW_ruleReferencedValue_in_entryRuleReferencedValue4218);
            iv_ruleReferencedValue=ruleReferencedValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleReferencedValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleReferencedValue4228); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleReferencedValue"


    // $ANTLR start "ruleReferencedValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1793:1: ruleReferencedValue returns [EObject current=null] : this_DefinedValue_0= ruleDefinedValue ;
    public final EObject ruleReferencedValue() throws RecognitionException {
        EObject current = null;

        EObject this_DefinedValue_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1796:28: (this_DefinedValue_0= ruleDefinedValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1798:5: this_DefinedValue_0= ruleDefinedValue
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getReferencedValueAccess().getDefinedValueParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleDefinedValue_in_ruleReferencedValue4274);
            this_DefinedValue_0=ruleDefinedValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_DefinedValue_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleReferencedValue"


    // $ANTLR start "entryRuleNamedValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1814:1: entryRuleNamedValue returns [EObject current=null] : iv_ruleNamedValue= ruleNamedValue EOF ;
    public final EObject entryRuleNamedValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1815:2: (iv_ruleNamedValue= ruleNamedValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1816:2: iv_ruleNamedValue= ruleNamedValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamedValueRule()); 
            }
            pushFollow(FOLLOW_ruleNamedValue_in_entryRuleNamedValue4308);
            iv_ruleNamedValue=ruleNamedValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamedValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamedValue4318); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedValue"


    // $ANTLR start "ruleNamedValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1823:1: ruleNamedValue returns [EObject current=null] : ( ( (lv_identifier_0_0= RULE_ID ) ) ( (lv_value_1_0= ruleValue ) ) ) ;
    public final EObject ruleNamedValue() throws RecognitionException {
        EObject current = null;

        Token lv_identifier_0_0=null;
        EObject lv_value_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1826:28: ( ( ( (lv_identifier_0_0= RULE_ID ) ) ( (lv_value_1_0= ruleValue ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1827:1: ( ( (lv_identifier_0_0= RULE_ID ) ) ( (lv_value_1_0= ruleValue ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1827:1: ( ( (lv_identifier_0_0= RULE_ID ) ) ( (lv_value_1_0= ruleValue ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1827:2: ( (lv_identifier_0_0= RULE_ID ) ) ( (lv_value_1_0= ruleValue ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1827:2: ( (lv_identifier_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1828:1: (lv_identifier_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1828:1: (lv_identifier_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1829:3: lv_identifier_0_0= RULE_ID
            {
            lv_identifier_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNamedValue4360); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_identifier_0_0, grammarAccess.getNamedValueAccess().getIdentifierIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getNamedValueRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"identifier",
                      		lv_identifier_0_0, 
                      		"ID");
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1845:2: ( (lv_value_1_0= ruleValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1846:1: (lv_value_1_0= ruleValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1846:1: (lv_value_1_0= ruleValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1847:3: lv_value_1_0= ruleValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamedValueAccess().getValueValueParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValue_in_ruleNamedValue4386);
            lv_value_1_0=ruleValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamedValueRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_1_0, 
                      		"Value");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedValue"


    // $ANTLR start "entryRuleBooleanType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1871:1: entryRuleBooleanType returns [EObject current=null] : iv_ruleBooleanType= ruleBooleanType EOF ;
    public final EObject entryRuleBooleanType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1872:2: (iv_ruleBooleanType= ruleBooleanType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1873:2: iv_ruleBooleanType= ruleBooleanType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBooleanTypeRule()); 
            }
            pushFollow(FOLLOW_ruleBooleanType_in_entryRuleBooleanType4422);
            iv_ruleBooleanType=ruleBooleanType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBooleanType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleBooleanType4432); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBooleanType"


    // $ANTLR start "ruleBooleanType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1880:1: ruleBooleanType returns [EObject current=null] : ( () otherlv_1= 'BOOLEAN' ) ;
    public final EObject ruleBooleanType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1883:28: ( ( () otherlv_1= 'BOOLEAN' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1884:1: ( () otherlv_1= 'BOOLEAN' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1884:1: ( () otherlv_1= 'BOOLEAN' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1884:2: () otherlv_1= 'BOOLEAN'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1884:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1885:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getBooleanTypeAccess().getBooleanTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,30,FOLLOW_30_in_ruleBooleanType4478); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getBooleanTypeAccess().getBOOLEANKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBooleanType"


    // $ANTLR start "entryRuleBooleanValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1902:1: entryRuleBooleanValue returns [EObject current=null] : iv_ruleBooleanValue= ruleBooleanValue EOF ;
    public final EObject entryRuleBooleanValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBooleanValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1903:2: (iv_ruleBooleanValue= ruleBooleanValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1904:2: iv_ruleBooleanValue= ruleBooleanValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBooleanValueRule()); 
            }
            pushFollow(FOLLOW_ruleBooleanValue_in_entryRuleBooleanValue4514);
            iv_ruleBooleanValue=ruleBooleanValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBooleanValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleBooleanValue4524); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBooleanValue"


    // $ANTLR start "ruleBooleanValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1911:1: ruleBooleanValue returns [EObject current=null] : ( (lv_value_0_0= ruleBOOL ) ) ;
    public final EObject ruleBooleanValue() throws RecognitionException {
        EObject current = null;

        Enumerator lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1914:28: ( ( (lv_value_0_0= ruleBOOL ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1915:1: ( (lv_value_0_0= ruleBOOL ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1915:1: ( (lv_value_0_0= ruleBOOL ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1916:1: (lv_value_0_0= ruleBOOL )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1916:1: (lv_value_0_0= ruleBOOL )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1917:3: lv_value_0_0= ruleBOOL
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getBooleanValueAccess().getValueBOOLEnumRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleBOOL_in_ruleBooleanValue4569);
            lv_value_0_0=ruleBOOL();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getBooleanValueRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_0_0, 
                      		"BOOL");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBooleanValue"


    // $ANTLR start "entryRuleIntegerType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1941:1: entryRuleIntegerType returns [EObject current=null] : iv_ruleIntegerType= ruleIntegerType EOF ;
    public final EObject entryRuleIntegerType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntegerType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1942:2: (iv_ruleIntegerType= ruleIntegerType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1943:2: iv_ruleIntegerType= ruleIntegerType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIntegerTypeRule()); 
            }
            pushFollow(FOLLOW_ruleIntegerType_in_entryRuleIntegerType4604);
            iv_ruleIntegerType=ruleIntegerType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIntegerType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntegerType4614); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntegerType"


    // $ANTLR start "ruleIntegerType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1950:1: ruleIntegerType returns [EObject current=null] : ( () otherlv_1= 'INTEGER' (otherlv_2= '{' ( (lv_namedNumberList_3_0= ruleNamedNumber ) ) (otherlv_4= ',' ( (lv_namedNumberList_5_0= ruleNamedNumber ) ) )* otherlv_6= '}' )? ) ;
    public final EObject ruleIntegerType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        EObject lv_namedNumberList_3_0 = null;

        EObject lv_namedNumberList_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1953:28: ( ( () otherlv_1= 'INTEGER' (otherlv_2= '{' ( (lv_namedNumberList_3_0= ruleNamedNumber ) ) (otherlv_4= ',' ( (lv_namedNumberList_5_0= ruleNamedNumber ) ) )* otherlv_6= '}' )? ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1954:1: ( () otherlv_1= 'INTEGER' (otherlv_2= '{' ( (lv_namedNumberList_3_0= ruleNamedNumber ) ) (otherlv_4= ',' ( (lv_namedNumberList_5_0= ruleNamedNumber ) ) )* otherlv_6= '}' )? )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1954:1: ( () otherlv_1= 'INTEGER' (otherlv_2= '{' ( (lv_namedNumberList_3_0= ruleNamedNumber ) ) (otherlv_4= ',' ( (lv_namedNumberList_5_0= ruleNamedNumber ) ) )* otherlv_6= '}' )? )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1954:2: () otherlv_1= 'INTEGER' (otherlv_2= '{' ( (lv_namedNumberList_3_0= ruleNamedNumber ) ) (otherlv_4= ',' ( (lv_namedNumberList_5_0= ruleNamedNumber ) ) )* otherlv_6= '}' )?
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1954:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1955:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getIntegerTypeAccess().getIntegerTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,31,FOLLOW_31_in_ruleIntegerType4660); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getIntegerTypeAccess().getINTEGERKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1964:1: (otherlv_2= '{' ( (lv_namedNumberList_3_0= ruleNamedNumber ) ) (otherlv_4= ',' ( (lv_namedNumberList_5_0= ruleNamedNumber ) ) )* otherlv_6= '}' )?
            int alt26=2;
            int LA26_0 = input.LA(1);

            if ( (LA26_0==32) ) {
                alt26=1;
            }
            switch (alt26) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1964:3: otherlv_2= '{' ( (lv_namedNumberList_3_0= ruleNamedNumber ) ) (otherlv_4= ',' ( (lv_namedNumberList_5_0= ruleNamedNumber ) ) )* otherlv_6= '}'
                    {
                    otherlv_2=(Token)match(input,32,FOLLOW_32_in_ruleIntegerType4673); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getIntegerTypeAccess().getLeftCurlyBracketKeyword_2_0());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1968:1: ( (lv_namedNumberList_3_0= ruleNamedNumber ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1969:1: (lv_namedNumberList_3_0= ruleNamedNumber )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1969:1: (lv_namedNumberList_3_0= ruleNamedNumber )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1970:3: lv_namedNumberList_3_0= ruleNamedNumber
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getIntegerTypeAccess().getNamedNumberListNamedNumberParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleNamedNumber_in_ruleIntegerType4694);
                    lv_namedNumberList_3_0=ruleNamedNumber();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getIntegerTypeRule());
                      	        }
                             		add(
                             			current, 
                             			"namedNumberList",
                              		lv_namedNumberList_3_0, 
                              		"NamedNumber");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1986:2: (otherlv_4= ',' ( (lv_namedNumberList_5_0= ruleNamedNumber ) ) )*
                    loop25:
                    do {
                        int alt25=2;
                        int LA25_0 = input.LA(1);

                        if ( (LA25_0==25) ) {
                            alt25=1;
                        }


                        switch (alt25) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1986:4: otherlv_4= ',' ( (lv_namedNumberList_5_0= ruleNamedNumber ) )
                    	    {
                    	    otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleIntegerType4707); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_4, grammarAccess.getIntegerTypeAccess().getCommaKeyword_2_2_0());
                    	          
                    	    }
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1990:1: ( (lv_namedNumberList_5_0= ruleNamedNumber ) )
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1991:1: (lv_namedNumberList_5_0= ruleNamedNumber )
                    	    {
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1991:1: (lv_namedNumberList_5_0= ruleNamedNumber )
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:1992:3: lv_namedNumberList_5_0= ruleNamedNumber
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getIntegerTypeAccess().getNamedNumberListNamedNumberParserRuleCall_2_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleNamedNumber_in_ruleIntegerType4728);
                    	    lv_namedNumberList_5_0=ruleNamedNumber();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getIntegerTypeRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"namedNumberList",
                    	              		lv_namedNumberList_5_0, 
                    	              		"NamedNumber");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop25;
                        }
                    } while (true);

                    otherlv_6=(Token)match(input,33,FOLLOW_33_in_ruleIntegerType4742); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_6, grammarAccess.getIntegerTypeAccess().getRightCurlyBracketKeyword_2_3());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntegerType"


    // $ANTLR start "entryRuleNamedNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2020:1: entryRuleNamedNumber returns [EObject current=null] : iv_ruleNamedNumber= ruleNamedNumber EOF ;
    public final EObject entryRuleNamedNumber() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedNumber = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2021:2: (iv_ruleNamedNumber= ruleNamedNumber EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2022:2: iv_ruleNamedNumber= ruleNamedNumber EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamedNumberRule()); 
            }
            pushFollow(FOLLOW_ruleNamedNumber_in_entryRuleNamedNumber4780);
            iv_ruleNamedNumber=ruleNamedNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamedNumber; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamedNumber4790); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedNumber"


    // $ANTLR start "ruleNamedNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2029:1: ruleNamedNumber returns [EObject current=null] : ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= ruleSignedNumber ) ) otherlv_3= ')' ) | ( ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' ) ) ;
    public final EObject ruleNamedNumber() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token lv_name_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        AntlrDatatypeRuleToken lv_number_2_0 = null;

        EObject lv_value_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2032:28: ( ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= ruleSignedNumber ) ) otherlv_3= ')' ) | ( ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2033:1: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= ruleSignedNumber ) ) otherlv_3= ')' ) | ( ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2033:1: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= ruleSignedNumber ) ) otherlv_3= ')' ) | ( ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' ) )
            int alt27=2;
            int LA27_0 = input.LA(1);

            if ( (LA27_0==RULE_ID) ) {
                int LA27_1 = input.LA(2);

                if ( (LA27_1==34) ) {
                    int LA27_2 = input.LA(3);

                    if ( (LA27_2==RULE_ID) ) {
                        alt27=2;
                    }
                    else if ( (LA27_2==RULE_LONG||LA27_2==99) ) {
                        alt27=1;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 27, 2, input);

                        throw nvae;
                    }
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 27, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 27, 0, input);

                throw nvae;
            }
            switch (alt27) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2033:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= ruleSignedNumber ) ) otherlv_3= ')' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2033:2: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= ruleSignedNumber ) ) otherlv_3= ')' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2033:3: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= ruleSignedNumber ) ) otherlv_3= ')'
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2033:3: ( (lv_name_0_0= RULE_ID ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2034:1: (lv_name_0_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2034:1: (lv_name_0_0= RULE_ID )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2035:3: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNamedNumber4833); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_0_0, grammarAccess.getNamedNumberAccess().getNameIDTerminalRuleCall_0_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getNamedNumberRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_0_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    otherlv_1=(Token)match(input,34,FOLLOW_34_in_ruleNamedNumber4850); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getNamedNumberAccess().getLeftParenthesisKeyword_0_1());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2055:1: ( (lv_number_2_0= ruleSignedNumber ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2056:1: (lv_number_2_0= ruleSignedNumber )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2056:1: (lv_number_2_0= ruleSignedNumber )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2057:3: lv_number_2_0= ruleSignedNumber
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNamedNumberAccess().getNumberSignedNumberParserRuleCall_0_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleSignedNumber_in_ruleNamedNumber4871);
                    lv_number_2_0=ruleSignedNumber();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNamedNumberRule());
                      	        }
                             		set(
                             			current, 
                             			"number",
                              		lv_number_2_0, 
                              		"SignedNumber");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_3=(Token)match(input,35,FOLLOW_35_in_ruleNamedNumber4883); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getNamedNumberAccess().getRightParenthesisKeyword_0_3());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2078:6: ( ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2078:6: ( ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2078:7: ( (lv_name_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')'
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2078:7: ( (lv_name_4_0= RULE_ID ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2079:1: (lv_name_4_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2079:1: (lv_name_4_0= RULE_ID )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2080:3: lv_name_4_0= RULE_ID
                    {
                    lv_name_4_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNamedNumber4908); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_4_0, grammarAccess.getNamedNumberAccess().getNameIDTerminalRuleCall_1_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getNamedNumberRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_4_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    otherlv_5=(Token)match(input,34,FOLLOW_34_in_ruleNamedNumber4925); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getNamedNumberAccess().getLeftParenthesisKeyword_1_1());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2100:1: ( (lv_value_6_0= ruleDefinedValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2101:1: (lv_value_6_0= ruleDefinedValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2101:1: (lv_value_6_0= ruleDefinedValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2102:3: lv_value_6_0= ruleDefinedValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNamedNumberAccess().getValueDefinedValueParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDefinedValue_in_ruleNamedNumber4946);
                    lv_value_6_0=ruleDefinedValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNamedNumberRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_6_0, 
                              		"DefinedValue");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_7=(Token)match(input,35,FOLLOW_35_in_ruleNamedNumber4958); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getNamedNumberAccess().getRightParenthesisKeyword_1_3());
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedNumber"


    // $ANTLR start "entryRuleIntegerValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2130:1: entryRuleIntegerValue returns [EObject current=null] : iv_ruleIntegerValue= ruleIntegerValue EOF ;
    public final EObject entryRuleIntegerValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntegerValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2131:2: (iv_ruleIntegerValue= ruleIntegerValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2132:2: iv_ruleIntegerValue= ruleIntegerValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIntegerValueRule()); 
            }
            pushFollow(FOLLOW_ruleIntegerValue_in_entryRuleIntegerValue4995);
            iv_ruleIntegerValue=ruleIntegerValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIntegerValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntegerValue5005); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntegerValue"


    // $ANTLR start "ruleIntegerValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2139:1: ruleIntegerValue returns [EObject current=null] : ( (lv_value_0_0= ruleSignedNumber ) ) ;
    public final EObject ruleIntegerValue() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2142:28: ( ( (lv_value_0_0= ruleSignedNumber ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2143:1: ( (lv_value_0_0= ruleSignedNumber ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2143:1: ( (lv_value_0_0= ruleSignedNumber ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2144:1: (lv_value_0_0= ruleSignedNumber )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2144:1: (lv_value_0_0= ruleSignedNumber )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2145:3: lv_value_0_0= ruleSignedNumber
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIntegerValueAccess().getValueSignedNumberParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleSignedNumber_in_ruleIntegerValue5050);
            lv_value_0_0=ruleSignedNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIntegerValueRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_0_0, 
                      		"SignedNumber");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntegerValue"


    // $ANTLR start "entryRuleEnumeratedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2169:1: entryRuleEnumeratedType returns [EObject current=null] : iv_ruleEnumeratedType= ruleEnumeratedType EOF ;
    public final EObject entryRuleEnumeratedType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumeratedType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2170:2: (iv_ruleEnumeratedType= ruleEnumeratedType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2171:2: iv_ruleEnumeratedType= ruleEnumeratedType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEnumeratedTypeRule()); 
            }
            pushFollow(FOLLOW_ruleEnumeratedType_in_entryRuleEnumeratedType5085);
            iv_ruleEnumeratedType=ruleEnumeratedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEnumeratedType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnumeratedType5095); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumeratedType"


    // $ANTLR start "ruleEnumeratedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2178:1: ruleEnumeratedType returns [EObject current=null] : ( () otherlv_1= 'ENUMERATED' otherlv_2= '{' (otherlv_3= '...' ( (lv_exception_4_0= ruleExceptionSpec ) ) )? ( (lv_enums_5_0= ruleEnumerationItem ) ) (otherlv_6= ',' ( (lv_enums_7_0= ruleEnumerationItem ) ) )* otherlv_8= '}' ) ;
    public final EObject ruleEnumeratedType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        EObject lv_exception_4_0 = null;

        EObject lv_enums_5_0 = null;

        EObject lv_enums_7_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2181:28: ( ( () otherlv_1= 'ENUMERATED' otherlv_2= '{' (otherlv_3= '...' ( (lv_exception_4_0= ruleExceptionSpec ) ) )? ( (lv_enums_5_0= ruleEnumerationItem ) ) (otherlv_6= ',' ( (lv_enums_7_0= ruleEnumerationItem ) ) )* otherlv_8= '}' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2182:1: ( () otherlv_1= 'ENUMERATED' otherlv_2= '{' (otherlv_3= '...' ( (lv_exception_4_0= ruleExceptionSpec ) ) )? ( (lv_enums_5_0= ruleEnumerationItem ) ) (otherlv_6= ',' ( (lv_enums_7_0= ruleEnumerationItem ) ) )* otherlv_8= '}' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2182:1: ( () otherlv_1= 'ENUMERATED' otherlv_2= '{' (otherlv_3= '...' ( (lv_exception_4_0= ruleExceptionSpec ) ) )? ( (lv_enums_5_0= ruleEnumerationItem ) ) (otherlv_6= ',' ( (lv_enums_7_0= ruleEnumerationItem ) ) )* otherlv_8= '}' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2182:2: () otherlv_1= 'ENUMERATED' otherlv_2= '{' (otherlv_3= '...' ( (lv_exception_4_0= ruleExceptionSpec ) ) )? ( (lv_enums_5_0= ruleEnumerationItem ) ) (otherlv_6= ',' ( (lv_enums_7_0= ruleEnumerationItem ) ) )* otherlv_8= '}'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2182:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2183:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getEnumeratedTypeAccess().getEnumeratedTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,36,FOLLOW_36_in_ruleEnumeratedType5141); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getEnumeratedTypeAccess().getENUMERATEDKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,32,FOLLOW_32_in_ruleEnumeratedType5153); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getEnumeratedTypeAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2196:1: (otherlv_3= '...' ( (lv_exception_4_0= ruleExceptionSpec ) ) )?
            int alt28=2;
            int LA28_0 = input.LA(1);

            if ( (LA28_0==37) ) {
                int LA28_1 = input.LA(2);

                if ( ((LA28_1>=RULE_ID && LA28_1<=RULE_LONG)||(LA28_1>=30 && LA28_1<=31)||LA28_1==36||LA28_1==38||LA28_1==42||LA28_1==44||(LA28_1>=46 && LA28_1<=47)||(LA28_1>=58 && LA28_1<=60)||LA28_1==65||(LA28_1>=67 && LA28_1<=87)) ) {
                    alt28=1;
                }
            }
            switch (alt28) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2196:3: otherlv_3= '...' ( (lv_exception_4_0= ruleExceptionSpec ) )
                    {
                    otherlv_3=(Token)match(input,37,FOLLOW_37_in_ruleEnumeratedType5166); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getEnumeratedTypeAccess().getFullStopFullStopFullStopKeyword_3_0());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2200:1: ( (lv_exception_4_0= ruleExceptionSpec ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2201:1: (lv_exception_4_0= ruleExceptionSpec )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2201:1: (lv_exception_4_0= ruleExceptionSpec )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2202:3: lv_exception_4_0= ruleExceptionSpec
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getEnumeratedTypeAccess().getExceptionExceptionSpecParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleExceptionSpec_in_ruleEnumeratedType5187);
                    lv_exception_4_0=ruleExceptionSpec();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getEnumeratedTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"exception",
                              		lv_exception_4_0, 
                              		"ExceptionSpec");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2218:4: ( (lv_enums_5_0= ruleEnumerationItem ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2219:1: (lv_enums_5_0= ruleEnumerationItem )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2219:1: (lv_enums_5_0= ruleEnumerationItem )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2220:3: lv_enums_5_0= ruleEnumerationItem
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getEnumeratedTypeAccess().getEnumsEnumerationItemParserRuleCall_4_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleEnumerationItem_in_ruleEnumeratedType5210);
            lv_enums_5_0=ruleEnumerationItem();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getEnumeratedTypeRule());
              	        }
                     		add(
                     			current, 
                     			"enums",
                      		lv_enums_5_0, 
                      		"EnumerationItem");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2236:2: (otherlv_6= ',' ( (lv_enums_7_0= ruleEnumerationItem ) ) )*
            loop29:
            do {
                int alt29=2;
                int LA29_0 = input.LA(1);

                if ( (LA29_0==25) ) {
                    alt29=1;
                }


                switch (alt29) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2236:4: otherlv_6= ',' ( (lv_enums_7_0= ruleEnumerationItem ) )
            	    {
            	    otherlv_6=(Token)match(input,25,FOLLOW_25_in_ruleEnumeratedType5223); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_6, grammarAccess.getEnumeratedTypeAccess().getCommaKeyword_5_0());
            	          
            	    }
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2240:1: ( (lv_enums_7_0= ruleEnumerationItem ) )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2241:1: (lv_enums_7_0= ruleEnumerationItem )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2241:1: (lv_enums_7_0= ruleEnumerationItem )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2242:3: lv_enums_7_0= ruleEnumerationItem
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getEnumeratedTypeAccess().getEnumsEnumerationItemParserRuleCall_5_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleEnumerationItem_in_ruleEnumeratedType5244);
            	    lv_enums_7_0=ruleEnumerationItem();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getEnumeratedTypeRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"enums",
            	              		lv_enums_7_0, 
            	              		"EnumerationItem");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop29;
                }
            } while (true);

            otherlv_8=(Token)match(input,33,FOLLOW_33_in_ruleEnumeratedType5258); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getEnumeratedTypeAccess().getRightCurlyBracketKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumeratedType"


    // $ANTLR start "entryRuleEnumerationItem"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2270:1: entryRuleEnumerationItem returns [EObject current=null] : iv_ruleEnumerationItem= ruleEnumerationItem EOF ;
    public final EObject entryRuleEnumerationItem() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnumerationItem = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2271:2: (iv_ruleEnumerationItem= ruleEnumerationItem EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2272:2: iv_ruleEnumerationItem= ruleEnumerationItem EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getEnumerationItemRule()); 
            }
            pushFollow(FOLLOW_ruleEnumerationItem_in_entryRuleEnumerationItem5294);
            iv_ruleEnumerationItem=ruleEnumerationItem();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleEnumerationItem; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnumerationItem5304); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnumerationItem"


    // $ANTLR start "ruleEnumerationItem"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2279:1: ruleEnumerationItem returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) | ( (lv_number_1_0= ruleNamedNumber ) ) | ( (lv_unspec_2_0= '...' ) ) ) ;
    public final EObject ruleEnumerationItem() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token lv_unspec_2_0=null;
        EObject lv_number_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2282:28: ( ( ( (lv_name_0_0= RULE_ID ) ) | ( (lv_number_1_0= ruleNamedNumber ) ) | ( (lv_unspec_2_0= '...' ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2283:1: ( ( (lv_name_0_0= RULE_ID ) ) | ( (lv_number_1_0= ruleNamedNumber ) ) | ( (lv_unspec_2_0= '...' ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2283:1: ( ( (lv_name_0_0= RULE_ID ) ) | ( (lv_number_1_0= ruleNamedNumber ) ) | ( (lv_unspec_2_0= '...' ) ) )
            int alt30=3;
            int LA30_0 = input.LA(1);

            if ( (LA30_0==RULE_ID) ) {
                int LA30_1 = input.LA(2);

                if ( (LA30_1==34) ) {
                    alt30=2;
                }
                else if ( (LA30_1==EOF||LA30_1==25||LA30_1==33) ) {
                    alt30=1;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 30, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA30_0==37) ) {
                alt30=3;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 30, 0, input);

                throw nvae;
            }
            switch (alt30) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2283:2: ( (lv_name_0_0= RULE_ID ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2283:2: ( (lv_name_0_0= RULE_ID ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2284:1: (lv_name_0_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2284:1: (lv_name_0_0= RULE_ID )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2285:3: lv_name_0_0= RULE_ID
                    {
                    lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleEnumerationItem5346); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_name_0_0, grammarAccess.getEnumerationItemAccess().getNameIDTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getEnumerationItemRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"name",
                              		lv_name_0_0, 
                              		"ID");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2302:6: ( (lv_number_1_0= ruleNamedNumber ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2302:6: ( (lv_number_1_0= ruleNamedNumber ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2303:1: (lv_number_1_0= ruleNamedNumber )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2303:1: (lv_number_1_0= ruleNamedNumber )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2304:3: lv_number_1_0= ruleNamedNumber
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getEnumerationItemAccess().getNumberNamedNumberParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleNamedNumber_in_ruleEnumerationItem5378);
                    lv_number_1_0=ruleNamedNumber();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getEnumerationItemRule());
                      	        }
                             		set(
                             			current, 
                             			"number",
                              		lv_number_1_0, 
                              		"NamedNumber");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2321:6: ( (lv_unspec_2_0= '...' ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2321:6: ( (lv_unspec_2_0= '...' ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2322:1: (lv_unspec_2_0= '...' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2322:1: (lv_unspec_2_0= '...' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2323:3: lv_unspec_2_0= '...'
                    {
                    lv_unspec_2_0=(Token)match(input,37,FOLLOW_37_in_ruleEnumerationItem5402); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_unspec_2_0, grammarAccess.getEnumerationItemAccess().getUnspecFullStopFullStopFullStopKeyword_2_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getEnumerationItemRule());
                      	        }
                             		setWithLastConsumed(current, "unspec", lv_unspec_2_0, "...");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnumerationItem"


    // $ANTLR start "entryRuleRealType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2344:1: entryRuleRealType returns [EObject current=null] : iv_ruleRealType= ruleRealType EOF ;
    public final EObject entryRuleRealType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRealType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2345:2: (iv_ruleRealType= ruleRealType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2346:2: iv_ruleRealType= ruleRealType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRealTypeRule()); 
            }
            pushFollow(FOLLOW_ruleRealType_in_entryRuleRealType5451);
            iv_ruleRealType=ruleRealType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRealType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleRealType5461); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRealType"


    // $ANTLR start "ruleRealType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2353:1: ruleRealType returns [EObject current=null] : ( () otherlv_1= 'REAL' ) ;
    public final EObject ruleRealType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2356:28: ( ( () otherlv_1= 'REAL' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2357:1: ( () otherlv_1= 'REAL' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2357:1: ( () otherlv_1= 'REAL' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2357:2: () otherlv_1= 'REAL'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2357:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2358:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getRealTypeAccess().getRealTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,38,FOLLOW_38_in_ruleRealType5507); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getRealTypeAccess().getREALKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRealType"


    // $ANTLR start "entryRuleRealValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2375:1: entryRuleRealValue returns [EObject current=null] : iv_ruleRealValue= ruleRealValue EOF ;
    public final EObject entryRuleRealValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRealValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2376:2: (iv_ruleRealValue= ruleRealValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2377:2: iv_ruleRealValue= ruleRealValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRealValueRule()); 
            }
            pushFollow(FOLLOW_ruleRealValue_in_entryRuleRealValue5543);
            iv_ruleRealValue=ruleRealValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRealValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleRealValue5553); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRealValue"


    // $ANTLR start "ruleRealValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2384:1: ruleRealValue returns [EObject current=null] : (this_NumericRealValue_0= ruleNumericRealValue | this_SpecialRealValue_1= ruleSpecialRealValue ) ;
    public final EObject ruleRealValue() throws RecognitionException {
        EObject current = null;

        EObject this_NumericRealValue_0 = null;

        EObject this_SpecialRealValue_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2387:28: ( (this_NumericRealValue_0= ruleNumericRealValue | this_SpecialRealValue_1= ruleSpecialRealValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2388:1: (this_NumericRealValue_0= ruleNumericRealValue | this_SpecialRealValue_1= ruleSpecialRealValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2388:1: (this_NumericRealValue_0= ruleNumericRealValue | this_SpecialRealValue_1= ruleSpecialRealValue )
            int alt31=2;
            int LA31_0 = input.LA(1);

            if ( (LA31_0==RULE_LONG||LA31_0==32||LA31_0==99) ) {
                alt31=1;
            }
            else if ( ((LA31_0>=101 && LA31_0<=103)) ) {
                alt31=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 31, 0, input);

                throw nvae;
            }
            switch (alt31) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2389:5: this_NumericRealValue_0= ruleNumericRealValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRealValueAccess().getNumericRealValueParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNumericRealValue_in_ruleRealValue5600);
                    this_NumericRealValue_0=ruleNumericRealValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NumericRealValue_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2399:5: this_SpecialRealValue_1= ruleSpecialRealValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRealValueAccess().getSpecialRealValueParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSpecialRealValue_in_ruleRealValue5627);
                    this_SpecialRealValue_1=ruleSpecialRealValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SpecialRealValue_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRealValue"


    // $ANTLR start "entryRuleNumericRealValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2415:1: entryRuleNumericRealValue returns [EObject current=null] : iv_ruleNumericRealValue= ruleNumericRealValue EOF ;
    public final EObject entryRuleNumericRealValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumericRealValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2416:2: (iv_ruleNumericRealValue= ruleNumericRealValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2417:2: iv_ruleNumericRealValue= ruleNumericRealValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNumericRealValueRule()); 
            }
            pushFollow(FOLLOW_ruleNumericRealValue_in_entryRuleNumericRealValue5662);
            iv_ruleNumericRealValue=ruleNumericRealValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNumericRealValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumericRealValue5672); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumericRealValue"


    // $ANTLR start "ruleNumericRealValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2424:1: ruleNumericRealValue returns [EObject current=null] : ( ( (lv_value_0_0= ruleDoubleNumber ) ) | ( (lv_sequenceValue_1_0= ruleRealSequenceValue ) ) ) ;
    public final EObject ruleNumericRealValue() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_value_0_0 = null;

        EObject lv_sequenceValue_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2427:28: ( ( ( (lv_value_0_0= ruleDoubleNumber ) ) | ( (lv_sequenceValue_1_0= ruleRealSequenceValue ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2428:1: ( ( (lv_value_0_0= ruleDoubleNumber ) ) | ( (lv_sequenceValue_1_0= ruleRealSequenceValue ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2428:1: ( ( (lv_value_0_0= ruleDoubleNumber ) ) | ( (lv_sequenceValue_1_0= ruleRealSequenceValue ) ) )
            int alt32=2;
            int LA32_0 = input.LA(1);

            if ( (LA32_0==RULE_LONG||LA32_0==99) ) {
                alt32=1;
            }
            else if ( (LA32_0==32) ) {
                alt32=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 32, 0, input);

                throw nvae;
            }
            switch (alt32) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2428:2: ( (lv_value_0_0= ruleDoubleNumber ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2428:2: ( (lv_value_0_0= ruleDoubleNumber ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2429:1: (lv_value_0_0= ruleDoubleNumber )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2429:1: (lv_value_0_0= ruleDoubleNumber )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2430:3: lv_value_0_0= ruleDoubleNumber
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNumericRealValueAccess().getValueDoubleNumberParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDoubleNumber_in_ruleNumericRealValue5718);
                    lv_value_0_0=ruleDoubleNumber();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNumericRealValueRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_0_0, 
                              		"DoubleNumber");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2447:6: ( (lv_sequenceValue_1_0= ruleRealSequenceValue ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2447:6: ( (lv_sequenceValue_1_0= ruleRealSequenceValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2448:1: (lv_sequenceValue_1_0= ruleRealSequenceValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2448:1: (lv_sequenceValue_1_0= ruleRealSequenceValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2449:3: lv_sequenceValue_1_0= ruleRealSequenceValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNumericRealValueAccess().getSequenceValueRealSequenceValueParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleRealSequenceValue_in_ruleNumericRealValue5745);
                    lv_sequenceValue_1_0=ruleRealSequenceValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNumericRealValueRule());
                      	        }
                             		set(
                             			current, 
                             			"sequenceValue",
                              		lv_sequenceValue_1_0, 
                              		"RealSequenceValue");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumericRealValue"


    // $ANTLR start "entryRuleRealSequenceValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2473:1: entryRuleRealSequenceValue returns [EObject current=null] : iv_ruleRealSequenceValue= ruleRealSequenceValue EOF ;
    public final EObject entryRuleRealSequenceValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRealSequenceValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2474:2: (iv_ruleRealSequenceValue= ruleRealSequenceValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2475:2: iv_ruleRealSequenceValue= ruleRealSequenceValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRealSequenceValueRule()); 
            }
            pushFollow(FOLLOW_ruleRealSequenceValue_in_entryRuleRealSequenceValue5781);
            iv_ruleRealSequenceValue=ruleRealSequenceValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRealSequenceValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleRealSequenceValue5791); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRealSequenceValue"


    // $ANTLR start "ruleRealSequenceValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2482:1: ruleRealSequenceValue returns [EObject current=null] : (otherlv_0= '{' otherlv_1= 'mantissa' ( (lv_mantissa_2_0= ruleSignedNumber ) ) otherlv_3= ',' otherlv_4= 'base' ( (lv_base_5_0= ruleSignedNumber ) ) otherlv_6= ',' otherlv_7= 'exponent' ( (lv_exponent_8_0= ruleSignedNumber ) ) otherlv_9= '}' ) ;
    public final EObject ruleRealSequenceValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token otherlv_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_7=null;
        Token otherlv_9=null;
        AntlrDatatypeRuleToken lv_mantissa_2_0 = null;

        AntlrDatatypeRuleToken lv_base_5_0 = null;

        AntlrDatatypeRuleToken lv_exponent_8_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2485:28: ( (otherlv_0= '{' otherlv_1= 'mantissa' ( (lv_mantissa_2_0= ruleSignedNumber ) ) otherlv_3= ',' otherlv_4= 'base' ( (lv_base_5_0= ruleSignedNumber ) ) otherlv_6= ',' otherlv_7= 'exponent' ( (lv_exponent_8_0= ruleSignedNumber ) ) otherlv_9= '}' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2486:1: (otherlv_0= '{' otherlv_1= 'mantissa' ( (lv_mantissa_2_0= ruleSignedNumber ) ) otherlv_3= ',' otherlv_4= 'base' ( (lv_base_5_0= ruleSignedNumber ) ) otherlv_6= ',' otherlv_7= 'exponent' ( (lv_exponent_8_0= ruleSignedNumber ) ) otherlv_9= '}' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2486:1: (otherlv_0= '{' otherlv_1= 'mantissa' ( (lv_mantissa_2_0= ruleSignedNumber ) ) otherlv_3= ',' otherlv_4= 'base' ( (lv_base_5_0= ruleSignedNumber ) ) otherlv_6= ',' otherlv_7= 'exponent' ( (lv_exponent_8_0= ruleSignedNumber ) ) otherlv_9= '}' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2486:3: otherlv_0= '{' otherlv_1= 'mantissa' ( (lv_mantissa_2_0= ruleSignedNumber ) ) otherlv_3= ',' otherlv_4= 'base' ( (lv_base_5_0= ruleSignedNumber ) ) otherlv_6= ',' otherlv_7= 'exponent' ( (lv_exponent_8_0= ruleSignedNumber ) ) otherlv_9= '}'
            {
            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleRealSequenceValue5828); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getRealSequenceValueAccess().getLeftCurlyBracketKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,39,FOLLOW_39_in_ruleRealSequenceValue5840); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getRealSequenceValueAccess().getMantissaKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2494:1: ( (lv_mantissa_2_0= ruleSignedNumber ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2495:1: (lv_mantissa_2_0= ruleSignedNumber )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2495:1: (lv_mantissa_2_0= ruleSignedNumber )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2496:3: lv_mantissa_2_0= ruleSignedNumber
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getRealSequenceValueAccess().getMantissaSignedNumberParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleSignedNumber_in_ruleRealSequenceValue5861);
            lv_mantissa_2_0=ruleSignedNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getRealSequenceValueRule());
              	        }
                     		set(
                     			current, 
                     			"mantissa",
                      		lv_mantissa_2_0, 
                      		"SignedNumber");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleRealSequenceValue5873); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getRealSequenceValueAccess().getCommaKeyword_3());
                  
            }
            otherlv_4=(Token)match(input,40,FOLLOW_40_in_ruleRealSequenceValue5885); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getRealSequenceValueAccess().getBaseKeyword_4());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2520:1: ( (lv_base_5_0= ruleSignedNumber ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2521:1: (lv_base_5_0= ruleSignedNumber )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2521:1: (lv_base_5_0= ruleSignedNumber )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2522:3: lv_base_5_0= ruleSignedNumber
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getRealSequenceValueAccess().getBaseSignedNumberParserRuleCall_5_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleSignedNumber_in_ruleRealSequenceValue5906);
            lv_base_5_0=ruleSignedNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getRealSequenceValueRule());
              	        }
                     		set(
                     			current, 
                     			"base",
                      		lv_base_5_0, 
                      		"SignedNumber");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_6=(Token)match(input,25,FOLLOW_25_in_ruleRealSequenceValue5918); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getRealSequenceValueAccess().getCommaKeyword_6());
                  
            }
            otherlv_7=(Token)match(input,41,FOLLOW_41_in_ruleRealSequenceValue5930); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_7, grammarAccess.getRealSequenceValueAccess().getExponentKeyword_7());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2546:1: ( (lv_exponent_8_0= ruleSignedNumber ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2547:1: (lv_exponent_8_0= ruleSignedNumber )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2547:1: (lv_exponent_8_0= ruleSignedNumber )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2548:3: lv_exponent_8_0= ruleSignedNumber
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getRealSequenceValueAccess().getExponentSignedNumberParserRuleCall_8_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleSignedNumber_in_ruleRealSequenceValue5951);
            lv_exponent_8_0=ruleSignedNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getRealSequenceValueRule());
              	        }
                     		set(
                     			current, 
                     			"exponent",
                      		lv_exponent_8_0, 
                      		"SignedNumber");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_9=(Token)match(input,33,FOLLOW_33_in_ruleRealSequenceValue5963); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_9, grammarAccess.getRealSequenceValueAccess().getRightCurlyBracketKeyword_9());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRealSequenceValue"


    // $ANTLR start "entryRuleSpecialRealValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2576:1: entryRuleSpecialRealValue returns [EObject current=null] : iv_ruleSpecialRealValue= ruleSpecialRealValue EOF ;
    public final EObject entryRuleSpecialRealValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSpecialRealValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2577:2: (iv_ruleSpecialRealValue= ruleSpecialRealValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2578:2: iv_ruleSpecialRealValue= ruleSpecialRealValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSpecialRealValueRule()); 
            }
            pushFollow(FOLLOW_ruleSpecialRealValue_in_entryRuleSpecialRealValue5999);
            iv_ruleSpecialRealValue=ruleSpecialRealValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSpecialRealValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSpecialRealValue6009); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSpecialRealValue"


    // $ANTLR start "ruleSpecialRealValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2585:1: ruleSpecialRealValue returns [EObject current=null] : ( (lv_value_0_0= ruleSpecialValue ) ) ;
    public final EObject ruleSpecialRealValue() throws RecognitionException {
        EObject current = null;

        Enumerator lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2588:28: ( ( (lv_value_0_0= ruleSpecialValue ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2589:1: ( (lv_value_0_0= ruleSpecialValue ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2589:1: ( (lv_value_0_0= ruleSpecialValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2590:1: (lv_value_0_0= ruleSpecialValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2590:1: (lv_value_0_0= ruleSpecialValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2591:3: lv_value_0_0= ruleSpecialValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSpecialRealValueAccess().getValueSpecialValueEnumRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleSpecialValue_in_ruleSpecialRealValue6054);
            lv_value_0_0=ruleSpecialValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSpecialRealValueRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_0_0, 
                      		"SpecialValue");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSpecialRealValue"


    // $ANTLR start "entryRuleBitStringType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2615:1: entryRuleBitStringType returns [EObject current=null] : iv_ruleBitStringType= ruleBitStringType EOF ;
    public final EObject entryRuleBitStringType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBitStringType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2616:2: (iv_ruleBitStringType= ruleBitStringType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2617:2: iv_ruleBitStringType= ruleBitStringType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBitStringTypeRule()); 
            }
            pushFollow(FOLLOW_ruleBitStringType_in_entryRuleBitStringType6089);
            iv_ruleBitStringType=ruleBitStringType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBitStringType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleBitStringType6099); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBitStringType"


    // $ANTLR start "ruleBitStringType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2624:1: ruleBitStringType returns [EObject current=null] : ( () otherlv_1= 'BIT' otherlv_2= 'STRING' (otherlv_3= '{' ( (lv_namedBits_4_0= ruleNamedBit ) ) (otherlv_5= ',' ( (lv_namedBits_6_0= ruleNamedBit ) ) )* otherlv_7= '}' )? ) ;
    public final EObject ruleBitStringType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        EObject lv_namedBits_4_0 = null;

        EObject lv_namedBits_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2627:28: ( ( () otherlv_1= 'BIT' otherlv_2= 'STRING' (otherlv_3= '{' ( (lv_namedBits_4_0= ruleNamedBit ) ) (otherlv_5= ',' ( (lv_namedBits_6_0= ruleNamedBit ) ) )* otherlv_7= '}' )? ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2628:1: ( () otherlv_1= 'BIT' otherlv_2= 'STRING' (otherlv_3= '{' ( (lv_namedBits_4_0= ruleNamedBit ) ) (otherlv_5= ',' ( (lv_namedBits_6_0= ruleNamedBit ) ) )* otherlv_7= '}' )? )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2628:1: ( () otherlv_1= 'BIT' otherlv_2= 'STRING' (otherlv_3= '{' ( (lv_namedBits_4_0= ruleNamedBit ) ) (otherlv_5= ',' ( (lv_namedBits_6_0= ruleNamedBit ) ) )* otherlv_7= '}' )? )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2628:2: () otherlv_1= 'BIT' otherlv_2= 'STRING' (otherlv_3= '{' ( (lv_namedBits_4_0= ruleNamedBit ) ) (otherlv_5= ',' ( (lv_namedBits_6_0= ruleNamedBit ) ) )* otherlv_7= '}' )?
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2628:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2629:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getBitStringTypeAccess().getBitStringTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,42,FOLLOW_42_in_ruleBitStringType6145); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getBitStringTypeAccess().getBITKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,43,FOLLOW_43_in_ruleBitStringType6157); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getBitStringTypeAccess().getSTRINGKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2642:1: (otherlv_3= '{' ( (lv_namedBits_4_0= ruleNamedBit ) ) (otherlv_5= ',' ( (lv_namedBits_6_0= ruleNamedBit ) ) )* otherlv_7= '}' )?
            int alt34=2;
            int LA34_0 = input.LA(1);

            if ( (LA34_0==32) ) {
                alt34=1;
            }
            switch (alt34) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2642:3: otherlv_3= '{' ( (lv_namedBits_4_0= ruleNamedBit ) ) (otherlv_5= ',' ( (lv_namedBits_6_0= ruleNamedBit ) ) )* otherlv_7= '}'
                    {
                    otherlv_3=(Token)match(input,32,FOLLOW_32_in_ruleBitStringType6170); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getBitStringTypeAccess().getLeftCurlyBracketKeyword_3_0());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2646:1: ( (lv_namedBits_4_0= ruleNamedBit ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2647:1: (lv_namedBits_4_0= ruleNamedBit )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2647:1: (lv_namedBits_4_0= ruleNamedBit )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2648:3: lv_namedBits_4_0= ruleNamedBit
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getBitStringTypeAccess().getNamedBitsNamedBitParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleNamedBit_in_ruleBitStringType6191);
                    lv_namedBits_4_0=ruleNamedBit();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getBitStringTypeRule());
                      	        }
                             		add(
                             			current, 
                             			"namedBits",
                              		lv_namedBits_4_0, 
                              		"NamedBit");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2664:2: (otherlv_5= ',' ( (lv_namedBits_6_0= ruleNamedBit ) ) )*
                    loop33:
                    do {
                        int alt33=2;
                        int LA33_0 = input.LA(1);

                        if ( (LA33_0==25) ) {
                            alt33=1;
                        }


                        switch (alt33) {
                    	case 1 :
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2664:4: otherlv_5= ',' ( (lv_namedBits_6_0= ruleNamedBit ) )
                    	    {
                    	    otherlv_5=(Token)match(input,25,FOLLOW_25_in_ruleBitStringType6204); if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	          	newLeafNode(otherlv_5, grammarAccess.getBitStringTypeAccess().getCommaKeyword_3_2_0());
                    	          
                    	    }
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2668:1: ( (lv_namedBits_6_0= ruleNamedBit ) )
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2669:1: (lv_namedBits_6_0= ruleNamedBit )
                    	    {
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2669:1: (lv_namedBits_6_0= ruleNamedBit )
                    	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2670:3: lv_namedBits_6_0= ruleNamedBit
                    	    {
                    	    if ( state.backtracking==0 ) {
                    	       
                    	      	        newCompositeNode(grammarAccess.getBitStringTypeAccess().getNamedBitsNamedBitParserRuleCall_3_2_1_0()); 
                    	      	    
                    	    }
                    	    pushFollow(FOLLOW_ruleNamedBit_in_ruleBitStringType6225);
                    	    lv_namedBits_6_0=ruleNamedBit();

                    	    state._fsp--;
                    	    if (state.failed) return current;
                    	    if ( state.backtracking==0 ) {

                    	      	        if (current==null) {
                    	      	            current = createModelElementForParent(grammarAccess.getBitStringTypeRule());
                    	      	        }
                    	             		add(
                    	             			current, 
                    	             			"namedBits",
                    	              		lv_namedBits_6_0, 
                    	              		"NamedBit");
                    	      	        afterParserOrEnumRuleCall();
                    	      	    
                    	    }

                    	    }


                    	    }


                    	    }
                    	    break;

                    	default :
                    	    break loop33;
                        }
                    } while (true);

                    otherlv_7=(Token)match(input,33,FOLLOW_33_in_ruleBitStringType6239); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getBitStringTypeAccess().getRightCurlyBracketKeyword_3_3());
                          
                    }

                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBitStringType"


    // $ANTLR start "entryRuleNamedBit"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2698:1: entryRuleNamedBit returns [EObject current=null] : iv_ruleNamedBit= ruleNamedBit EOF ;
    public final EObject entryRuleNamedBit() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedBit = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2699:2: (iv_ruleNamedBit= ruleNamedBit EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2700:2: iv_ruleNamedBit= ruleNamedBit EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamedBitRule()); 
            }
            pushFollow(FOLLOW_ruleNamedBit_in_entryRuleNamedBit6277);
            iv_ruleNamedBit=ruleNamedBit();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamedBit; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamedBit6287); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedBit"


    // $ANTLR start "ruleNamedBit"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2707:1: ruleNamedBit returns [EObject current=null] : ( ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= RULE_LONG ) ) otherlv_3= ')' ) | ( ( (lv_identifier_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' ) ) ;
    public final EObject ruleNamedBit() throws RecognitionException {
        EObject current = null;

        Token lv_identifier_0_0=null;
        Token otherlv_1=null;
        Token lv_number_2_0=null;
        Token otherlv_3=null;
        Token lv_identifier_4_0=null;
        Token otherlv_5=null;
        Token otherlv_7=null;
        EObject lv_value_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2710:28: ( ( ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= RULE_LONG ) ) otherlv_3= ')' ) | ( ( (lv_identifier_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2711:1: ( ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= RULE_LONG ) ) otherlv_3= ')' ) | ( ( (lv_identifier_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2711:1: ( ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= RULE_LONG ) ) otherlv_3= ')' ) | ( ( (lv_identifier_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' ) )
            int alt35=2;
            int LA35_0 = input.LA(1);

            if ( (LA35_0==RULE_ID) ) {
                int LA35_1 = input.LA(2);

                if ( (LA35_1==34) ) {
                    int LA35_2 = input.LA(3);

                    if ( (LA35_2==RULE_LONG) ) {
                        alt35=1;
                    }
                    else if ( (LA35_2==RULE_ID) ) {
                        alt35=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 35, 2, input);

                        throw nvae;
                    }
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 35, 1, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 35, 0, input);

                throw nvae;
            }
            switch (alt35) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2711:2: ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= RULE_LONG ) ) otherlv_3= ')' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2711:2: ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= RULE_LONG ) ) otherlv_3= ')' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2711:3: ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= '(' ( (lv_number_2_0= RULE_LONG ) ) otherlv_3= ')'
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2711:3: ( (lv_identifier_0_0= RULE_ID ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2712:1: (lv_identifier_0_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2712:1: (lv_identifier_0_0= RULE_ID )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2713:3: lv_identifier_0_0= RULE_ID
                    {
                    lv_identifier_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNamedBit6330); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_identifier_0_0, grammarAccess.getNamedBitAccess().getIdentifierIDTerminalRuleCall_0_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getNamedBitRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"identifier",
                              		lv_identifier_0_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    otherlv_1=(Token)match(input,34,FOLLOW_34_in_ruleNamedBit6347); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getNamedBitAccess().getLeftParenthesisKeyword_0_1());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2733:1: ( (lv_number_2_0= RULE_LONG ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2734:1: (lv_number_2_0= RULE_LONG )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2734:1: (lv_number_2_0= RULE_LONG )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2735:3: lv_number_2_0= RULE_LONG
                    {
                    lv_number_2_0=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleNamedBit6364); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_number_2_0, grammarAccess.getNamedBitAccess().getNumberLONGTerminalRuleCall_0_2_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getNamedBitRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"number",
                              		lv_number_2_0, 
                              		"LONG");
                      	    
                    }

                    }


                    }

                    otherlv_3=(Token)match(input,35,FOLLOW_35_in_ruleNamedBit6381); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getNamedBitAccess().getRightParenthesisKeyword_0_3());
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2756:6: ( ( (lv_identifier_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2756:6: ( ( (lv_identifier_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2756:7: ( (lv_identifier_4_0= RULE_ID ) ) otherlv_5= '(' ( (lv_value_6_0= ruleDefinedValue ) ) otherlv_7= ')'
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2756:7: ( (lv_identifier_4_0= RULE_ID ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2757:1: (lv_identifier_4_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2757:1: (lv_identifier_4_0= RULE_ID )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2758:3: lv_identifier_4_0= RULE_ID
                    {
                    lv_identifier_4_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleNamedBit6406); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_identifier_4_0, grammarAccess.getNamedBitAccess().getIdentifierIDTerminalRuleCall_1_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getNamedBitRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"identifier",
                              		lv_identifier_4_0, 
                              		"ID");
                      	    
                    }

                    }


                    }

                    otherlv_5=(Token)match(input,34,FOLLOW_34_in_ruleNamedBit6423); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_5, grammarAccess.getNamedBitAccess().getLeftParenthesisKeyword_1_1());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2778:1: ( (lv_value_6_0= ruleDefinedValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2779:1: (lv_value_6_0= ruleDefinedValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2779:1: (lv_value_6_0= ruleDefinedValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2780:3: lv_value_6_0= ruleDefinedValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNamedBitAccess().getValueDefinedValueParserRuleCall_1_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDefinedValue_in_ruleNamedBit6444);
                    lv_value_6_0=ruleDefinedValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNamedBitRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_6_0, 
                              		"DefinedValue");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_7=(Token)match(input,35,FOLLOW_35_in_ruleNamedBit6456); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_7, grammarAccess.getNamedBitAccess().getRightParenthesisKeyword_1_3());
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedBit"


    // $ANTLR start "entryRuleOctetStringType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2810:1: entryRuleOctetStringType returns [EObject current=null] : iv_ruleOctetStringType= ruleOctetStringType EOF ;
    public final EObject entryRuleOctetStringType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOctetStringType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2811:2: (iv_ruleOctetStringType= ruleOctetStringType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2812:2: iv_ruleOctetStringType= ruleOctetStringType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOctetStringTypeRule()); 
            }
            pushFollow(FOLLOW_ruleOctetStringType_in_entryRuleOctetStringType6495);
            iv_ruleOctetStringType=ruleOctetStringType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOctetStringType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOctetStringType6505); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOctetStringType"


    // $ANTLR start "ruleOctetStringType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2819:1: ruleOctetStringType returns [EObject current=null] : ( () otherlv_1= 'OCTET' otherlv_2= 'STRING' ) ;
    public final EObject ruleOctetStringType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2822:28: ( ( () otherlv_1= 'OCTET' otherlv_2= 'STRING' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2823:1: ( () otherlv_1= 'OCTET' otherlv_2= 'STRING' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2823:1: ( () otherlv_1= 'OCTET' otherlv_2= 'STRING' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2823:2: () otherlv_1= 'OCTET' otherlv_2= 'STRING'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2823:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2824:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getOctetStringTypeAccess().getOctetStringTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,44,FOLLOW_44_in_ruleOctetStringType6551); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getOctetStringTypeAccess().getOCTETKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,43,FOLLOW_43_in_ruleOctetStringType6563); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getOctetStringTypeAccess().getSTRINGKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOctetStringType"


    // $ANTLR start "entryRuleOctetStringValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2845:1: entryRuleOctetStringValue returns [EObject current=null] : iv_ruleOctetStringValue= ruleOctetStringValue EOF ;
    public final EObject entryRuleOctetStringValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOctetStringValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2846:2: (iv_ruleOctetStringValue= ruleOctetStringValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2847:2: iv_ruleOctetStringValue= ruleOctetStringValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getOctetStringValueRule()); 
            }
            pushFollow(FOLLOW_ruleOctetStringValue_in_entryRuleOctetStringValue6599);
            iv_ruleOctetStringValue=ruleOctetStringValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleOctetStringValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleOctetStringValue6609); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOctetStringValue"


    // $ANTLR start "ruleOctetStringValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2854:1: ruleOctetStringValue returns [EObject current=null] : ( ( (lv_binString_0_0= RULE_B_STRING ) ) | ( (lv_hexString_1_0= RULE_H_STRING ) ) | (otherlv_2= 'CONTAINING' ( (lv_acontainingValue_3_0= ruleValue ) ) ) ) ;
    public final EObject ruleOctetStringValue() throws RecognitionException {
        EObject current = null;

        Token lv_binString_0_0=null;
        Token lv_hexString_1_0=null;
        Token otherlv_2=null;
        EObject lv_acontainingValue_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2857:28: ( ( ( (lv_binString_0_0= RULE_B_STRING ) ) | ( (lv_hexString_1_0= RULE_H_STRING ) ) | (otherlv_2= 'CONTAINING' ( (lv_acontainingValue_3_0= ruleValue ) ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2858:1: ( ( (lv_binString_0_0= RULE_B_STRING ) ) | ( (lv_hexString_1_0= RULE_H_STRING ) ) | (otherlv_2= 'CONTAINING' ( (lv_acontainingValue_3_0= ruleValue ) ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2858:1: ( ( (lv_binString_0_0= RULE_B_STRING ) ) | ( (lv_hexString_1_0= RULE_H_STRING ) ) | (otherlv_2= 'CONTAINING' ( (lv_acontainingValue_3_0= ruleValue ) ) ) )
            int alt36=3;
            switch ( input.LA(1) ) {
            case RULE_B_STRING:
                {
                alt36=1;
                }
                break;
            case RULE_H_STRING:
                {
                alt36=2;
                }
                break;
            case 45:
                {
                alt36=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 36, 0, input);

                throw nvae;
            }

            switch (alt36) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2858:2: ( (lv_binString_0_0= RULE_B_STRING ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2858:2: ( (lv_binString_0_0= RULE_B_STRING ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2859:1: (lv_binString_0_0= RULE_B_STRING )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2859:1: (lv_binString_0_0= RULE_B_STRING )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2860:3: lv_binString_0_0= RULE_B_STRING
                    {
                    lv_binString_0_0=(Token)match(input,RULE_B_STRING,FOLLOW_RULE_B_STRING_in_ruleOctetStringValue6651); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_binString_0_0, grammarAccess.getOctetStringValueAccess().getBinStringB_STRINGTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getOctetStringValueRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"binString",
                              		lv_binString_0_0, 
                              		"B_STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2877:6: ( (lv_hexString_1_0= RULE_H_STRING ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2877:6: ( (lv_hexString_1_0= RULE_H_STRING ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2878:1: (lv_hexString_1_0= RULE_H_STRING )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2878:1: (lv_hexString_1_0= RULE_H_STRING )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2879:3: lv_hexString_1_0= RULE_H_STRING
                    {
                    lv_hexString_1_0=(Token)match(input,RULE_H_STRING,FOLLOW_RULE_H_STRING_in_ruleOctetStringValue6679); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_hexString_1_0, grammarAccess.getOctetStringValueAccess().getHexStringH_STRINGTerminalRuleCall_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getOctetStringValueRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"hexString",
                              		lv_hexString_1_0, 
                              		"H_STRING");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2896:6: (otherlv_2= 'CONTAINING' ( (lv_acontainingValue_3_0= ruleValue ) ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2896:6: (otherlv_2= 'CONTAINING' ( (lv_acontainingValue_3_0= ruleValue ) ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2896:8: otherlv_2= 'CONTAINING' ( (lv_acontainingValue_3_0= ruleValue ) )
                    {
                    otherlv_2=(Token)match(input,45,FOLLOW_45_in_ruleOctetStringValue6703); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getOctetStringValueAccess().getCONTAININGKeyword_2_0());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2900:1: ( (lv_acontainingValue_3_0= ruleValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2901:1: (lv_acontainingValue_3_0= ruleValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2901:1: (lv_acontainingValue_3_0= ruleValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2902:3: lv_acontainingValue_3_0= ruleValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getOctetStringValueAccess().getAcontainingValueValueParserRuleCall_2_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValue_in_ruleOctetStringValue6724);
                    lv_acontainingValue_3_0=ruleValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getOctetStringValueRule());
                      	        }
                             		set(
                             			current, 
                             			"acontainingValue",
                              		lv_acontainingValue_3_0, 
                              		"Value");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOctetStringValue"


    // $ANTLR start "entryRuleNullType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2926:1: entryRuleNullType returns [EObject current=null] : iv_ruleNullType= ruleNullType EOF ;
    public final EObject entryRuleNullType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNullType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2927:2: (iv_ruleNullType= ruleNullType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2928:2: iv_ruleNullType= ruleNullType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNullTypeRule()); 
            }
            pushFollow(FOLLOW_ruleNullType_in_entryRuleNullType6761);
            iv_ruleNullType=ruleNullType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNullType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNullType6771); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNullType"


    // $ANTLR start "ruleNullType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2935:1: ruleNullType returns [EObject current=null] : ( () otherlv_1= 'NULL' ) ;
    public final EObject ruleNullType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2938:28: ( ( () otherlv_1= 'NULL' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2939:1: ( () otherlv_1= 'NULL' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2939:1: ( () otherlv_1= 'NULL' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2939:2: () otherlv_1= 'NULL'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2939:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2940:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getNullTypeAccess().getNullTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,46,FOLLOW_46_in_ruleNullType6817); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getNullTypeAccess().getNULLKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNullType"


    // $ANTLR start "entryRuleSequenceType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2959:1: entryRuleSequenceType returns [EObject current=null] : iv_ruleSequenceType= ruleSequenceType EOF ;
    public final EObject entryRuleSequenceType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2960:2: (iv_ruleSequenceType= ruleSequenceType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2961:2: iv_ruleSequenceType= ruleSequenceType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceTypeRule()); 
            }
            pushFollow(FOLLOW_ruleSequenceType_in_entryRuleSequenceType6855);
            iv_ruleSequenceType=ruleSequenceType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSequenceType6865); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceType"


    // $ANTLR start "ruleSequenceType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2968:1: ruleSequenceType returns [EObject current=null] : ( () otherlv_1= 'SEQUENCE' otherlv_2= '{' ( (lv_componentTypeList_3_0= ruleComponentTypeList ) )? (otherlv_4= ',' )? ( ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditions_6_0= ruleExtensionAdditions ) )? ( ruleExtensionMarker )? )? otherlv_8= '}' ) ;
    public final EObject ruleSequenceType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_8=null;
        EObject lv_componentTypeList_3_0 = null;

        EObject lv_extensionAndException_5_0 = null;

        EObject lv_extensionAdditions_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2971:28: ( ( () otherlv_1= 'SEQUENCE' otherlv_2= '{' ( (lv_componentTypeList_3_0= ruleComponentTypeList ) )? (otherlv_4= ',' )? ( ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditions_6_0= ruleExtensionAdditions ) )? ( ruleExtensionMarker )? )? otherlv_8= '}' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2972:1: ( () otherlv_1= 'SEQUENCE' otherlv_2= '{' ( (lv_componentTypeList_3_0= ruleComponentTypeList ) )? (otherlv_4= ',' )? ( ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditions_6_0= ruleExtensionAdditions ) )? ( ruleExtensionMarker )? )? otherlv_8= '}' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2972:1: ( () otherlv_1= 'SEQUENCE' otherlv_2= '{' ( (lv_componentTypeList_3_0= ruleComponentTypeList ) )? (otherlv_4= ',' )? ( ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditions_6_0= ruleExtensionAdditions ) )? ( ruleExtensionMarker )? )? otherlv_8= '}' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2972:2: () otherlv_1= 'SEQUENCE' otherlv_2= '{' ( (lv_componentTypeList_3_0= ruleComponentTypeList ) )? (otherlv_4= ',' )? ( ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditions_6_0= ruleExtensionAdditions ) )? ( ruleExtensionMarker )? )? otherlv_8= '}'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2972:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2973:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getSequenceTypeAccess().getSequenceTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,47,FOLLOW_47_in_ruleSequenceType6911); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSequenceTypeAccess().getSEQUENCEKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,32,FOLLOW_32_in_ruleSequenceType6923); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getSequenceTypeAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2986:1: ( (lv_componentTypeList_3_0= ruleComponentTypeList ) )?
            int alt37=2;
            int LA37_0 = input.LA(1);

            if ( (LA37_0==RULE_ID||LA37_0==53) ) {
                alt37=1;
            }
            switch (alt37) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2987:1: (lv_componentTypeList_3_0= ruleComponentTypeList )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2987:1: (lv_componentTypeList_3_0= ruleComponentTypeList )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:2988:3: lv_componentTypeList_3_0= ruleComponentTypeList
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSequenceTypeAccess().getComponentTypeListComponentTypeListParserRuleCall_3_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleComponentTypeList_in_ruleSequenceType6944);
                    lv_componentTypeList_3_0=ruleComponentTypeList();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSequenceTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"componentTypeList",
                              		lv_componentTypeList_3_0, 
                              		"ComponentTypeList");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3004:3: (otherlv_4= ',' )?
            int alt38=2;
            int LA38_0 = input.LA(1);

            if ( (LA38_0==25) ) {
                alt38=1;
            }
            switch (alt38) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3004:5: otherlv_4= ','
                    {
                    otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleSequenceType6958); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getSequenceTypeAccess().getCommaKeyword_4());
                          
                    }

                    }
                    break;

            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3008:3: ( ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditions_6_0= ruleExtensionAdditions ) )? ( ruleExtensionMarker )? )?
            int alt41=2;
            int LA41_0 = input.LA(1);

            if ( (LA41_0==37) ) {
                alt41=1;
            }
            switch (alt41) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3008:4: ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditions_6_0= ruleExtensionAdditions ) )? ( ruleExtensionMarker )?
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3008:4: ( (lv_extensionAndException_5_0= ruleExtensionAndException ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3009:1: (lv_extensionAndException_5_0= ruleExtensionAndException )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3009:1: (lv_extensionAndException_5_0= ruleExtensionAndException )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3010:3: lv_extensionAndException_5_0= ruleExtensionAndException
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSequenceTypeAccess().getExtensionAndExceptionExtensionAndExceptionParserRuleCall_5_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleExtensionAndException_in_ruleSequenceType6982);
                    lv_extensionAndException_5_0=ruleExtensionAndException();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSequenceTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"extensionAndException",
                              		lv_extensionAndException_5_0, 
                              		"ExtensionAndException");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3026:2: ( (lv_extensionAdditions_6_0= ruleExtensionAdditions ) )?
                    int alt39=2;
                    int LA39_0 = input.LA(1);

                    if ( (LA39_0==RULE_ID||LA39_0==49||LA39_0==53) ) {
                        alt39=1;
                    }
                    switch (alt39) {
                        case 1 :
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3027:1: (lv_extensionAdditions_6_0= ruleExtensionAdditions )
                            {
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3027:1: (lv_extensionAdditions_6_0= ruleExtensionAdditions )
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3028:3: lv_extensionAdditions_6_0= ruleExtensionAdditions
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getSequenceTypeAccess().getExtensionAdditionsExtensionAdditionsParserRuleCall_5_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleExtensionAdditions_in_ruleSequenceType7003);
                            lv_extensionAdditions_6_0=ruleExtensionAdditions();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getSequenceTypeRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"extensionAdditions",
                                      		lv_extensionAdditions_6_0, 
                                      		"ExtensionAdditions");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }

                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3044:3: ( ruleExtensionMarker )?
                    int alt40=2;
                    int LA40_0 = input.LA(1);

                    if ( (LA40_0==25) ) {
                        alt40=1;
                    }
                    switch (alt40) {
                        case 1 :
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3045:5: ruleExtensionMarker
                            {
                            if ( state.backtracking==0 ) {
                               
                                      newCompositeNode(grammarAccess.getSequenceTypeAccess().getExtensionMarkerParserRuleCall_5_2()); 
                                  
                            }
                            pushFollow(FOLLOW_ruleExtensionMarker_in_ruleSequenceType7021);
                            ruleExtensionMarker();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {
                               
                                      afterParserOrEnumRuleCall();
                                  
                            }

                            }
                            break;

                    }


                    }
                    break;

            }

            otherlv_8=(Token)match(input,33,FOLLOW_33_in_ruleSequenceType7036); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getSequenceTypeAccess().getRightCurlyBracketKeyword_6());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceType"


    // $ANTLR start "entryRuleExtensionAndException"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3064:1: entryRuleExtensionAndException returns [EObject current=null] : iv_ruleExtensionAndException= ruleExtensionAndException EOF ;
    public final EObject entryRuleExtensionAndException() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionAndException = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3065:2: (iv_ruleExtensionAndException= ruleExtensionAndException EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3066:2: iv_ruleExtensionAndException= ruleExtensionAndException EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExtensionAndExceptionRule()); 
            }
            pushFollow(FOLLOW_ruleExtensionAndException_in_entryRuleExtensionAndException7072);
            iv_ruleExtensionAndException=ruleExtensionAndException();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExtensionAndException; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionAndException7082); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionAndException"


    // $ANTLR start "ruleExtensionAndException"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3073:1: ruleExtensionAndException returns [EObject current=null] : ( () otherlv_1= '...' ( (lv_exception_2_0= ruleExceptionSpec ) )? ) ;
    public final EObject ruleExtensionAndException() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_exception_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3076:28: ( ( () otherlv_1= '...' ( (lv_exception_2_0= ruleExceptionSpec ) )? ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3077:1: ( () otherlv_1= '...' ( (lv_exception_2_0= ruleExceptionSpec ) )? )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3077:1: ( () otherlv_1= '...' ( (lv_exception_2_0= ruleExceptionSpec ) )? )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3077:2: () otherlv_1= '...' ( (lv_exception_2_0= ruleExceptionSpec ) )?
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3077:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3078:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getExtensionAndExceptionAccess().getExtensionAndExceptionAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,37,FOLLOW_37_in_ruleExtensionAndException7128); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getExtensionAndExceptionAccess().getFullStopFullStopFullStopKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3087:1: ( (lv_exception_2_0= ruleExceptionSpec ) )?
            int alt42=2;
            int LA42_0 = input.LA(1);

            if ( (LA42_0==RULE_LONG||(LA42_0>=30 && LA42_0<=31)||LA42_0==36||LA42_0==38||LA42_0==42||LA42_0==44||(LA42_0>=46 && LA42_0<=47)||(LA42_0>=58 && LA42_0<=60)||LA42_0==65||(LA42_0>=67 && LA42_0<=87)) ) {
                alt42=1;
            }
            else if ( (LA42_0==RULE_ID) ) {
                int LA42_2 = input.LA(2);

                if ( (LA42_2==RULE_ID) ) {
                    int LA42_4 = input.LA(3);

                    if ( (LA42_4==RULE_ID||(LA42_4>=30 && LA42_4<=31)||LA42_4==36||LA42_4==38||LA42_4==42||LA42_4==44||(LA42_4>=46 && LA42_4<=47)||LA42_4==55||(LA42_4>=58 && LA42_4<=60)||LA42_4==65||(LA42_4>=67 && LA42_4<=87)) ) {
                        alt42=1;
                    }
                }
                else if ( (LA42_2==EOF||LA42_2==25||LA42_2==33||(LA42_2>=48 && LA42_2<=49)||LA42_2==53) ) {
                    alt42=1;
                }
            }
            switch (alt42) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3088:1: (lv_exception_2_0= ruleExceptionSpec )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3088:1: (lv_exception_2_0= ruleExceptionSpec )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3089:3: lv_exception_2_0= ruleExceptionSpec
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getExtensionAndExceptionAccess().getExceptionExceptionSpecParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleExceptionSpec_in_ruleExtensionAndException7149);
                    lv_exception_2_0=ruleExceptionSpec();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getExtensionAndExceptionRule());
                      	        }
                             		set(
                             			current, 
                             			"exception",
                              		lv_exception_2_0, 
                              		"ExceptionSpec");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionAndException"


    // $ANTLR start "entryRuleExtensionMarker"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3113:1: entryRuleExtensionMarker returns [String current=null] : iv_ruleExtensionMarker= ruleExtensionMarker EOF ;
    public final String entryRuleExtensionMarker() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleExtensionMarker = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3114:2: (iv_ruleExtensionMarker= ruleExtensionMarker EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3115:2: iv_ruleExtensionMarker= ruleExtensionMarker EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExtensionMarkerRule()); 
            }
            pushFollow(FOLLOW_ruleExtensionMarker_in_entryRuleExtensionMarker7187);
            iv_ruleExtensionMarker=ruleExtensionMarker();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExtensionMarker.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionMarker7198); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionMarker"


    // $ANTLR start "ruleExtensionMarker"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3122:1: ruleExtensionMarker returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= ',' kw= '...' ) ;
    public final AntlrDatatypeRuleToken ruleExtensionMarker() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3125:28: ( (kw= ',' kw= '...' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3126:1: (kw= ',' kw= '...' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3126:1: (kw= ',' kw= '...' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3127:2: kw= ',' kw= '...'
            {
            kw=(Token)match(input,25,FOLLOW_25_in_ruleExtensionMarker7236); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getExtensionMarkerAccess().getCommaKeyword_0()); 
                  
            }
            kw=(Token)match(input,37,FOLLOW_37_in_ruleExtensionMarker7249); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getExtensionMarkerAccess().getFullStopFullStopFullStopKeyword_1()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionMarker"


    // $ANTLR start "entryRuleExtensionAdditions"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3146:1: entryRuleExtensionAdditions returns [EObject current=null] : iv_ruleExtensionAdditions= ruleExtensionAdditions EOF ;
    public final EObject entryRuleExtensionAdditions() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionAdditions = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3147:2: (iv_ruleExtensionAdditions= ruleExtensionAdditions EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3148:2: iv_ruleExtensionAdditions= ruleExtensionAdditions EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExtensionAdditionsRule()); 
            }
            pushFollow(FOLLOW_ruleExtensionAdditions_in_entryRuleExtensionAdditions7289);
            iv_ruleExtensionAdditions=ruleExtensionAdditions();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExtensionAdditions; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionAdditions7299); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionAdditions"


    // $ANTLR start "ruleExtensionAdditions"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3155:1: ruleExtensionAdditions returns [EObject current=null] : ( ( (lv_extensionAdditions_0_0= ruleExtensionAddition ) ) (otherlv_1= ',' ( (lv_extensionAdditions_2_0= ruleExtensionAddition ) ) )* ) ;
    public final EObject ruleExtensionAdditions() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_extensionAdditions_0_0 = null;

        EObject lv_extensionAdditions_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3158:28: ( ( ( (lv_extensionAdditions_0_0= ruleExtensionAddition ) ) (otherlv_1= ',' ( (lv_extensionAdditions_2_0= ruleExtensionAddition ) ) )* ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3159:1: ( ( (lv_extensionAdditions_0_0= ruleExtensionAddition ) ) (otherlv_1= ',' ( (lv_extensionAdditions_2_0= ruleExtensionAddition ) ) )* )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3159:1: ( ( (lv_extensionAdditions_0_0= ruleExtensionAddition ) ) (otherlv_1= ',' ( (lv_extensionAdditions_2_0= ruleExtensionAddition ) ) )* )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3159:2: ( (lv_extensionAdditions_0_0= ruleExtensionAddition ) ) (otherlv_1= ',' ( (lv_extensionAdditions_2_0= ruleExtensionAddition ) ) )*
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3159:2: ( (lv_extensionAdditions_0_0= ruleExtensionAddition ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3160:1: (lv_extensionAdditions_0_0= ruleExtensionAddition )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3160:1: (lv_extensionAdditions_0_0= ruleExtensionAddition )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3161:3: lv_extensionAdditions_0_0= ruleExtensionAddition
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExtensionAdditionsAccess().getExtensionAdditionsExtensionAdditionParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleExtensionAddition_in_ruleExtensionAdditions7345);
            lv_extensionAdditions_0_0=ruleExtensionAddition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExtensionAdditionsRule());
              	        }
                     		add(
                     			current, 
                     			"extensionAdditions",
                      		lv_extensionAdditions_0_0, 
                      		"ExtensionAddition");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3177:2: (otherlv_1= ',' ( (lv_extensionAdditions_2_0= ruleExtensionAddition ) ) )*
            loop43:
            do {
                int alt43=2;
                int LA43_0 = input.LA(1);

                if ( (LA43_0==25) ) {
                    int LA43_1 = input.LA(2);

                    if ( (LA43_1==RULE_ID||LA43_1==49||LA43_1==53) ) {
                        alt43=1;
                    }


                }


                switch (alt43) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3177:4: otherlv_1= ',' ( (lv_extensionAdditions_2_0= ruleExtensionAddition ) )
            	    {
            	    otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleExtensionAdditions7358); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getExtensionAdditionsAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3181:1: ( (lv_extensionAdditions_2_0= ruleExtensionAddition ) )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3182:1: (lv_extensionAdditions_2_0= ruleExtensionAddition )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3182:1: (lv_extensionAdditions_2_0= ruleExtensionAddition )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3183:3: lv_extensionAdditions_2_0= ruleExtensionAddition
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getExtensionAdditionsAccess().getExtensionAdditionsExtensionAdditionParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleExtensionAddition_in_ruleExtensionAdditions7379);
            	    lv_extensionAdditions_2_0=ruleExtensionAddition();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getExtensionAdditionsRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"extensionAdditions",
            	              		lv_extensionAdditions_2_0, 
            	              		"ExtensionAddition");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop43;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionAdditions"


    // $ANTLR start "entryRuleComponentTypeList"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3207:1: entryRuleComponentTypeList returns [EObject current=null] : iv_ruleComponentTypeList= ruleComponentTypeList EOF ;
    public final EObject entryRuleComponentTypeList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentTypeList = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3208:2: (iv_ruleComponentTypeList= ruleComponentTypeList EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3209:2: iv_ruleComponentTypeList= ruleComponentTypeList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getComponentTypeListRule()); 
            }
            pushFollow(FOLLOW_ruleComponentTypeList_in_entryRuleComponentTypeList7417);
            iv_ruleComponentTypeList=ruleComponentTypeList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleComponentTypeList; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentTypeList7427); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentTypeList"


    // $ANTLR start "ruleComponentTypeList"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3216:1: ruleComponentTypeList returns [EObject current=null] : ( ( (lv_componentTypes_0_0= ruleComponentType ) ) (otherlv_1= ',' ( (lv_componentTypes_2_0= ruleComponentType ) ) )* ) ;
    public final EObject ruleComponentTypeList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_componentTypes_0_0 = null;

        EObject lv_componentTypes_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3219:28: ( ( ( (lv_componentTypes_0_0= ruleComponentType ) ) (otherlv_1= ',' ( (lv_componentTypes_2_0= ruleComponentType ) ) )* ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3220:1: ( ( (lv_componentTypes_0_0= ruleComponentType ) ) (otherlv_1= ',' ( (lv_componentTypes_2_0= ruleComponentType ) ) )* )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3220:1: ( ( (lv_componentTypes_0_0= ruleComponentType ) ) (otherlv_1= ',' ( (lv_componentTypes_2_0= ruleComponentType ) ) )* )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3220:2: ( (lv_componentTypes_0_0= ruleComponentType ) ) (otherlv_1= ',' ( (lv_componentTypes_2_0= ruleComponentType ) ) )*
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3220:2: ( (lv_componentTypes_0_0= ruleComponentType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3221:1: (lv_componentTypes_0_0= ruleComponentType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3221:1: (lv_componentTypes_0_0= ruleComponentType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3222:3: lv_componentTypes_0_0= ruleComponentType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getComponentTypeListAccess().getComponentTypesComponentTypeParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleComponentType_in_ruleComponentTypeList7473);
            lv_componentTypes_0_0=ruleComponentType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getComponentTypeListRule());
              	        }
                     		add(
                     			current, 
                     			"componentTypes",
                      		lv_componentTypes_0_0, 
                      		"ComponentType");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3238:2: (otherlv_1= ',' ( (lv_componentTypes_2_0= ruleComponentType ) ) )*
            loop44:
            do {
                int alt44=2;
                int LA44_0 = input.LA(1);

                if ( (LA44_0==25) ) {
                    int LA44_1 = input.LA(2);

                    if ( (LA44_1==RULE_ID||LA44_1==53) ) {
                        alt44=1;
                    }


                }


                switch (alt44) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3238:4: otherlv_1= ',' ( (lv_componentTypes_2_0= ruleComponentType ) )
            	    {
            	    otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleComponentTypeList7486); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getComponentTypeListAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3242:1: ( (lv_componentTypes_2_0= ruleComponentType ) )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3243:1: (lv_componentTypes_2_0= ruleComponentType )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3243:1: (lv_componentTypes_2_0= ruleComponentType )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3244:3: lv_componentTypes_2_0= ruleComponentType
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getComponentTypeListAccess().getComponentTypesComponentTypeParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleComponentType_in_ruleComponentTypeList7507);
            	    lv_componentTypes_2_0=ruleComponentType();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getComponentTypeListRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"componentTypes",
            	              		lv_componentTypes_2_0, 
            	              		"ComponentType");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop44;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentTypeList"


    // $ANTLR start "entryRuleVersionNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3268:1: entryRuleVersionNumber returns [EObject current=null] : iv_ruleVersionNumber= ruleVersionNumber EOF ;
    public final EObject entryRuleVersionNumber() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVersionNumber = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3269:2: (iv_ruleVersionNumber= ruleVersionNumber EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3270:2: iv_ruleVersionNumber= ruleVersionNumber EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVersionNumberRule()); 
            }
            pushFollow(FOLLOW_ruleVersionNumber_in_entryRuleVersionNumber7545);
            iv_ruleVersionNumber=ruleVersionNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVersionNumber; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleVersionNumber7555); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVersionNumber"


    // $ANTLR start "ruleVersionNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3277:1: ruleVersionNumber returns [EObject current=null] : ( ( (lv_number_0_0= RULE_LONG ) ) otherlv_1= ':' ) ;
    public final EObject ruleVersionNumber() throws RecognitionException {
        EObject current = null;

        Token lv_number_0_0=null;
        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3280:28: ( ( ( (lv_number_0_0= RULE_LONG ) ) otherlv_1= ':' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3281:1: ( ( (lv_number_0_0= RULE_LONG ) ) otherlv_1= ':' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3281:1: ( ( (lv_number_0_0= RULE_LONG ) ) otherlv_1= ':' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3281:2: ( (lv_number_0_0= RULE_LONG ) ) otherlv_1= ':'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3281:2: ( (lv_number_0_0= RULE_LONG ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3282:1: (lv_number_0_0= RULE_LONG )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3282:1: (lv_number_0_0= RULE_LONG )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3283:3: lv_number_0_0= RULE_LONG
            {
            lv_number_0_0=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleVersionNumber7597); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_number_0_0, grammarAccess.getVersionNumberAccess().getNumberLONGTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getVersionNumberRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"number",
                      		lv_number_0_0, 
                      		"LONG");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,48,FOLLOW_48_in_ruleVersionNumber7614); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getVersionNumberAccess().getColonKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVersionNumber"


    // $ANTLR start "entryRuleExtensionAddition"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3311:1: entryRuleExtensionAddition returns [EObject current=null] : iv_ruleExtensionAddition= ruleExtensionAddition EOF ;
    public final EObject entryRuleExtensionAddition() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionAddition = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3312:2: (iv_ruleExtensionAddition= ruleExtensionAddition EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3313:2: iv_ruleExtensionAddition= ruleExtensionAddition EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExtensionAdditionRule()); 
            }
            pushFollow(FOLLOW_ruleExtensionAddition_in_entryRuleExtensionAddition7650);
            iv_ruleExtensionAddition=ruleExtensionAddition();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExtensionAddition; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionAddition7660); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionAddition"


    // $ANTLR start "ruleExtensionAddition"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3320:1: ruleExtensionAddition returns [EObject current=null] : (this_ComponentType_0= ruleComponentType | this_ExtensionAdditionGroup_1= ruleExtensionAdditionGroup ) ;
    public final EObject ruleExtensionAddition() throws RecognitionException {
        EObject current = null;

        EObject this_ComponentType_0 = null;

        EObject this_ExtensionAdditionGroup_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3323:28: ( (this_ComponentType_0= ruleComponentType | this_ExtensionAdditionGroup_1= ruleExtensionAdditionGroup ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3324:1: (this_ComponentType_0= ruleComponentType | this_ExtensionAdditionGroup_1= ruleExtensionAdditionGroup )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3324:1: (this_ComponentType_0= ruleComponentType | this_ExtensionAdditionGroup_1= ruleExtensionAdditionGroup )
            int alt45=2;
            int LA45_0 = input.LA(1);

            if ( (LA45_0==RULE_ID||LA45_0==53) ) {
                alt45=1;
            }
            else if ( (LA45_0==49) ) {
                alt45=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 45, 0, input);

                throw nvae;
            }
            switch (alt45) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3325:5: this_ComponentType_0= ruleComponentType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getExtensionAdditionAccess().getComponentTypeParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleComponentType_in_ruleExtensionAddition7707);
                    this_ComponentType_0=ruleComponentType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ComponentType_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3335:5: this_ExtensionAdditionGroup_1= ruleExtensionAdditionGroup
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getExtensionAdditionAccess().getExtensionAdditionGroupParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleExtensionAdditionGroup_in_ruleExtensionAddition7734);
                    this_ExtensionAdditionGroup_1=ruleExtensionAdditionGroup();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ExtensionAdditionGroup_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionAddition"


    // $ANTLR start "entryRuleExtensionAdditionGroup"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3351:1: entryRuleExtensionAdditionGroup returns [EObject current=null] : iv_ruleExtensionAdditionGroup= ruleExtensionAdditionGroup EOF ;
    public final EObject entryRuleExtensionAdditionGroup() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionAdditionGroup = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3352:2: (iv_ruleExtensionAdditionGroup= ruleExtensionAdditionGroup EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3353:2: iv_ruleExtensionAdditionGroup= ruleExtensionAdditionGroup EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExtensionAdditionGroupRule()); 
            }
            pushFollow(FOLLOW_ruleExtensionAdditionGroup_in_entryRuleExtensionAdditionGroup7769);
            iv_ruleExtensionAdditionGroup=ruleExtensionAdditionGroup();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExtensionAdditionGroup; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionAdditionGroup7779); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionAdditionGroup"


    // $ANTLR start "ruleExtensionAdditionGroup"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3360:1: ruleExtensionAdditionGroup returns [EObject current=null] : (otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_componentTypeList_2_0= ruleComponentTypeList ) ) otherlv_3= ']]' ) ;
    public final EObject ruleExtensionAdditionGroup() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        EObject lv_versionNumber_1_0 = null;

        EObject lv_componentTypeList_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3363:28: ( (otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_componentTypeList_2_0= ruleComponentTypeList ) ) otherlv_3= ']]' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3364:1: (otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_componentTypeList_2_0= ruleComponentTypeList ) ) otherlv_3= ']]' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3364:1: (otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_componentTypeList_2_0= ruleComponentTypeList ) ) otherlv_3= ']]' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3364:3: otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_componentTypeList_2_0= ruleComponentTypeList ) ) otherlv_3= ']]'
            {
            otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleExtensionAdditionGroup7816); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getExtensionAdditionGroupAccess().getLeftSquareBracketLeftSquareBracketKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3368:1: ( (lv_versionNumber_1_0= ruleVersionNumber ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3369:1: (lv_versionNumber_1_0= ruleVersionNumber )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3369:1: (lv_versionNumber_1_0= ruleVersionNumber )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3370:3: lv_versionNumber_1_0= ruleVersionNumber
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExtensionAdditionGroupAccess().getVersionNumberVersionNumberParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleVersionNumber_in_ruleExtensionAdditionGroup7837);
            lv_versionNumber_1_0=ruleVersionNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExtensionAdditionGroupRule());
              	        }
                     		set(
                     			current, 
                     			"versionNumber",
                      		lv_versionNumber_1_0, 
                      		"VersionNumber");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3386:2: ( (lv_componentTypeList_2_0= ruleComponentTypeList ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3387:1: (lv_componentTypeList_2_0= ruleComponentTypeList )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3387:1: (lv_componentTypeList_2_0= ruleComponentTypeList )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3388:3: lv_componentTypeList_2_0= ruleComponentTypeList
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExtensionAdditionGroupAccess().getComponentTypeListComponentTypeListParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleComponentTypeList_in_ruleExtensionAdditionGroup7858);
            lv_componentTypeList_2_0=ruleComponentTypeList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExtensionAdditionGroupRule());
              	        }
                     		set(
                     			current, 
                     			"componentTypeList",
                      		lv_componentTypeList_2_0, 
                      		"ComponentTypeList");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,50,FOLLOW_50_in_ruleExtensionAdditionGroup7870); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getExtensionAdditionGroupAccess().getRightSquareBracketRightSquareBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionAdditionGroup"


    // $ANTLR start "entryRuleComponentType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3416:1: entryRuleComponentType returns [EObject current=null] : iv_ruleComponentType= ruleComponentType EOF ;
    public final EObject entryRuleComponentType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3417:2: (iv_ruleComponentType= ruleComponentType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3418:2: iv_ruleComponentType= ruleComponentType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getComponentTypeRule()); 
            }
            pushFollow(FOLLOW_ruleComponentType_in_entryRuleComponentType7906);
            iv_ruleComponentType=ruleComponentType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleComponentType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentType7916); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentType"


    // $ANTLR start "ruleComponentType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3425:1: ruleComponentType returns [EObject current=null] : (this_NamedComponentType_0= ruleNamedComponentType | this_ComponentOfType_1= ruleComponentOfType | this_AnyDefinedNamedType_2= ruleAnyDefinedNamedType ) ;
    public final EObject ruleComponentType() throws RecognitionException {
        EObject current = null;

        EObject this_NamedComponentType_0 = null;

        EObject this_ComponentOfType_1 = null;

        EObject this_AnyDefinedNamedType_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3428:28: ( (this_NamedComponentType_0= ruleNamedComponentType | this_ComponentOfType_1= ruleComponentOfType | this_AnyDefinedNamedType_2= ruleAnyDefinedNamedType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3429:1: (this_NamedComponentType_0= ruleNamedComponentType | this_ComponentOfType_1= ruleComponentOfType | this_AnyDefinedNamedType_2= ruleAnyDefinedNamedType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3429:1: (this_NamedComponentType_0= ruleNamedComponentType | this_ComponentOfType_1= ruleComponentOfType | this_AnyDefinedNamedType_2= ruleAnyDefinedNamedType )
            int alt46=3;
            int LA46_0 = input.LA(1);

            if ( (LA46_0==RULE_ID) ) {
                int LA46_1 = input.LA(2);

                if ( (LA46_1==RULE_ID||(LA46_1>=30 && LA46_1<=31)||LA46_1==36||LA46_1==38||LA46_1==42||LA46_1==44||(LA46_1>=46 && LA46_1<=47)||(LA46_1>=58 && LA46_1<=60)||LA46_1==65||(LA46_1>=67 && LA46_1<=87)) ) {
                    alt46=1;
                }
                else if ( (LA46_1==55) ) {
                    alt46=3;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 46, 1, input);

                    throw nvae;
                }
            }
            else if ( (LA46_0==53) ) {
                alt46=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 46, 0, input);

                throw nvae;
            }
            switch (alt46) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3430:5: this_NamedComponentType_0= ruleNamedComponentType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getComponentTypeAccess().getNamedComponentTypeParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNamedComponentType_in_ruleComponentType7963);
                    this_NamedComponentType_0=ruleNamedComponentType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NamedComponentType_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3440:5: this_ComponentOfType_1= ruleComponentOfType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getComponentTypeAccess().getComponentOfTypeParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleComponentOfType_in_ruleComponentType7990);
                    this_ComponentOfType_1=ruleComponentOfType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ComponentOfType_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3450:5: this_AnyDefinedNamedType_2= ruleAnyDefinedNamedType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getComponentTypeAccess().getAnyDefinedNamedTypeParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleAnyDefinedNamedType_in_ruleComponentType8017);
                    this_AnyDefinedNamedType_2=ruleAnyDefinedNamedType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_AnyDefinedNamedType_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentType"


    // $ANTLR start "entryRuleNamedComponentType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3466:1: entryRuleNamedComponentType returns [EObject current=null] : iv_ruleNamedComponentType= ruleNamedComponentType EOF ;
    public final EObject entryRuleNamedComponentType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNamedComponentType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3467:2: (iv_ruleNamedComponentType= ruleNamedComponentType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3468:2: iv_ruleNamedComponentType= ruleNamedComponentType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNamedComponentTypeRule()); 
            }
            pushFollow(FOLLOW_ruleNamedComponentType_in_entryRuleNamedComponentType8052);
            iv_ruleNamedComponentType=ruleNamedComponentType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNamedComponentType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNamedComponentType8062); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNamedComponentType"


    // $ANTLR start "ruleNamedComponentType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3475:1: ruleNamedComponentType returns [EObject current=null] : ( ( (lv_namedType_0_0= ruleNamedType ) ) (otherlv_1= 'OPTIONAL' | (otherlv_2= 'DEFAULT' ( (lv_value_3_0= ruleValue ) ) ) )? ) ;
    public final EObject ruleNamedComponentType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        EObject lv_namedType_0_0 = null;

        EObject lv_value_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3478:28: ( ( ( (lv_namedType_0_0= ruleNamedType ) ) (otherlv_1= 'OPTIONAL' | (otherlv_2= 'DEFAULT' ( (lv_value_3_0= ruleValue ) ) ) )? ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3479:1: ( ( (lv_namedType_0_0= ruleNamedType ) ) (otherlv_1= 'OPTIONAL' | (otherlv_2= 'DEFAULT' ( (lv_value_3_0= ruleValue ) ) ) )? )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3479:1: ( ( (lv_namedType_0_0= ruleNamedType ) ) (otherlv_1= 'OPTIONAL' | (otherlv_2= 'DEFAULT' ( (lv_value_3_0= ruleValue ) ) ) )? )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3479:2: ( (lv_namedType_0_0= ruleNamedType ) ) (otherlv_1= 'OPTIONAL' | (otherlv_2= 'DEFAULT' ( (lv_value_3_0= ruleValue ) ) ) )?
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3479:2: ( (lv_namedType_0_0= ruleNamedType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3480:1: (lv_namedType_0_0= ruleNamedType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3480:1: (lv_namedType_0_0= ruleNamedType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3481:3: lv_namedType_0_0= ruleNamedType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getNamedComponentTypeAccess().getNamedTypeNamedTypeParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleNamedType_in_ruleNamedComponentType8108);
            lv_namedType_0_0=ruleNamedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getNamedComponentTypeRule());
              	        }
                     		set(
                     			current, 
                     			"namedType",
                      		lv_namedType_0_0, 
                      		"NamedType");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3497:2: (otherlv_1= 'OPTIONAL' | (otherlv_2= 'DEFAULT' ( (lv_value_3_0= ruleValue ) ) ) )?
            int alt47=3;
            int LA47_0 = input.LA(1);

            if ( (LA47_0==51) ) {
                alt47=1;
            }
            else if ( (LA47_0==52) ) {
                alt47=2;
            }
            switch (alt47) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3497:4: otherlv_1= 'OPTIONAL'
                    {
                    otherlv_1=(Token)match(input,51,FOLLOW_51_in_ruleNamedComponentType8121); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getNamedComponentTypeAccess().getOPTIONALKeyword_1_0());
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3502:6: (otherlv_2= 'DEFAULT' ( (lv_value_3_0= ruleValue ) ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3502:6: (otherlv_2= 'DEFAULT' ( (lv_value_3_0= ruleValue ) ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3502:8: otherlv_2= 'DEFAULT' ( (lv_value_3_0= ruleValue ) )
                    {
                    otherlv_2=(Token)match(input,52,FOLLOW_52_in_ruleNamedComponentType8140); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getNamedComponentTypeAccess().getDEFAULTKeyword_1_1_0());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3506:1: ( (lv_value_3_0= ruleValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3507:1: (lv_value_3_0= ruleValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3507:1: (lv_value_3_0= ruleValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3508:3: lv_value_3_0= ruleValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getNamedComponentTypeAccess().getValueValueParserRuleCall_1_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValue_in_ruleNamedComponentType8161);
                    lv_value_3_0=ruleValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getNamedComponentTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_3_0, 
                              		"Value");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNamedComponentType"


    // $ANTLR start "entryRuleComponentOfType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3532:1: entryRuleComponentOfType returns [EObject current=null] : iv_ruleComponentOfType= ruleComponentOfType EOF ;
    public final EObject entryRuleComponentOfType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentOfType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3533:2: (iv_ruleComponentOfType= ruleComponentOfType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3534:2: iv_ruleComponentOfType= ruleComponentOfType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getComponentOfTypeRule()); 
            }
            pushFollow(FOLLOW_ruleComponentOfType_in_entryRuleComponentOfType8200);
            iv_ruleComponentOfType=ruleComponentOfType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleComponentOfType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentOfType8210); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentOfType"


    // $ANTLR start "ruleComponentOfType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3541:1: ruleComponentOfType returns [EObject current=null] : (otherlv_0= 'COMPONENTS' otherlv_1= 'OF' ( (lv_type_2_0= ruleType ) ) ) ;
    public final EObject ruleComponentOfType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3544:28: ( (otherlv_0= 'COMPONENTS' otherlv_1= 'OF' ( (lv_type_2_0= ruleType ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3545:1: (otherlv_0= 'COMPONENTS' otherlv_1= 'OF' ( (lv_type_2_0= ruleType ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3545:1: (otherlv_0= 'COMPONENTS' otherlv_1= 'OF' ( (lv_type_2_0= ruleType ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3545:3: otherlv_0= 'COMPONENTS' otherlv_1= 'OF' ( (lv_type_2_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,53,FOLLOW_53_in_ruleComponentOfType8247); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getComponentOfTypeAccess().getCOMPONENTSKeyword_0());
                  
            }
            otherlv_1=(Token)match(input,54,FOLLOW_54_in_ruleComponentOfType8259); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getComponentOfTypeAccess().getOFKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3553:1: ( (lv_type_2_0= ruleType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3554:1: (lv_type_2_0= ruleType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3554:1: (lv_type_2_0= ruleType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3555:3: lv_type_2_0= ruleType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getComponentOfTypeAccess().getTypeTypeParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleType_in_ruleComponentOfType8280);
            lv_type_2_0=ruleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getComponentOfTypeRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_2_0, 
                      		"Type");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentOfType"


    // $ANTLR start "entryRuleAnyDefinedNamedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3579:1: entryRuleAnyDefinedNamedType returns [EObject current=null] : iv_ruleAnyDefinedNamedType= ruleAnyDefinedNamedType EOF ;
    public final EObject entryRuleAnyDefinedNamedType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAnyDefinedNamedType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3580:2: (iv_ruleAnyDefinedNamedType= ruleAnyDefinedNamedType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3581:2: iv_ruleAnyDefinedNamedType= ruleAnyDefinedNamedType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAnyDefinedNamedTypeRule()); 
            }
            pushFollow(FOLLOW_ruleAnyDefinedNamedType_in_entryRuleAnyDefinedNamedType8316);
            iv_ruleAnyDefinedNamedType=ruleAnyDefinedNamedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAnyDefinedNamedType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAnyDefinedNamedType8326); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAnyDefinedNamedType"


    // $ANTLR start "ruleAnyDefinedNamedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3588:1: ruleAnyDefinedNamedType returns [EObject current=null] : ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'ANY' otherlv_2= 'DEFINED' otherlv_3= 'BY' ( (otherlv_4= RULE_ID ) ) ) ;
    public final EObject ruleAnyDefinedNamedType() throws RecognitionException {
        EObject current = null;

        Token lv_name_0_0=null;
        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token otherlv_4=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3591:28: ( ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'ANY' otherlv_2= 'DEFINED' otherlv_3= 'BY' ( (otherlv_4= RULE_ID ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3592:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'ANY' otherlv_2= 'DEFINED' otherlv_3= 'BY' ( (otherlv_4= RULE_ID ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3592:1: ( ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'ANY' otherlv_2= 'DEFINED' otherlv_3= 'BY' ( (otherlv_4= RULE_ID ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3592:2: ( (lv_name_0_0= RULE_ID ) ) otherlv_1= 'ANY' otherlv_2= 'DEFINED' otherlv_3= 'BY' ( (otherlv_4= RULE_ID ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3592:2: ( (lv_name_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3593:1: (lv_name_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3593:1: (lv_name_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3594:3: lv_name_0_0= RULE_ID
            {
            lv_name_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAnyDefinedNamedType8368); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_name_0_0, grammarAccess.getAnyDefinedNamedTypeAccess().getNameIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getAnyDefinedNamedTypeRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"name",
                      		lv_name_0_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,55,FOLLOW_55_in_ruleAnyDefinedNamedType8385); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getAnyDefinedNamedTypeAccess().getANYKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,56,FOLLOW_56_in_ruleAnyDefinedNamedType8397); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getAnyDefinedNamedTypeAccess().getDEFINEDKeyword_2());
                  
            }
            otherlv_3=(Token)match(input,57,FOLLOW_57_in_ruleAnyDefinedNamedType8409); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getAnyDefinedNamedTypeAccess().getBYKeyword_3());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3622:1: ( (otherlv_4= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3623:1: (otherlv_4= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3623:1: (otherlv_4= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3624:3: otherlv_4= RULE_ID
            {
            if ( state.backtracking==0 ) {

              			if (current==null) {
              	            current = createModelElement(grammarAccess.getAnyDefinedNamedTypeRule());
              	        }
                      
            }
            otherlv_4=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleAnyDefinedNamedType8429); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		newLeafNode(otherlv_4, grammarAccess.getAnyDefinedNamedTypeAccess().getDefinedTypeNamedTypeCrossReference_4_0()); 
              	
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAnyDefinedNamedType"


    // $ANTLR start "entryRuleSequenceValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3643:1: entryRuleSequenceValue returns [EObject current=null] : iv_ruleSequenceValue= ruleSequenceValue EOF ;
    public final EObject entryRuleSequenceValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3644:2: (iv_ruleSequenceValue= ruleSequenceValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3645:2: iv_ruleSequenceValue= ruleSequenceValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceValueRule()); 
            }
            pushFollow(FOLLOW_ruleSequenceValue_in_entryRuleSequenceValue8465);
            iv_ruleSequenceValue=ruleSequenceValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSequenceValue8475); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceValue"


    // $ANTLR start "ruleSequenceValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3652:1: ruleSequenceValue returns [EObject current=null] : ( () otherlv_1= '{' ( (lv_componentValueList_2_0= ruleComponentValueList ) )? otherlv_3= '}' ) ;
    public final EObject ruleSequenceValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_3=null;
        EObject lv_componentValueList_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3655:28: ( ( () otherlv_1= '{' ( (lv_componentValueList_2_0= ruleComponentValueList ) )? otherlv_3= '}' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3656:1: ( () otherlv_1= '{' ( (lv_componentValueList_2_0= ruleComponentValueList ) )? otherlv_3= '}' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3656:1: ( () otherlv_1= '{' ( (lv_componentValueList_2_0= ruleComponentValueList ) )? otherlv_3= '}' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3656:2: () otherlv_1= '{' ( (lv_componentValueList_2_0= ruleComponentValueList ) )? otherlv_3= '}'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3656:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3657:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getSequenceValueAccess().getSequenceValueAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,32,FOLLOW_32_in_ruleSequenceValue8521); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSequenceValueAccess().getLeftCurlyBracketKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3666:1: ( (lv_componentValueList_2_0= ruleComponentValueList ) )?
            int alt48=2;
            int LA48_0 = input.LA(1);

            if ( (LA48_0==RULE_ID) ) {
                alt48=1;
            }
            switch (alt48) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3667:1: (lv_componentValueList_2_0= ruleComponentValueList )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3667:1: (lv_componentValueList_2_0= ruleComponentValueList )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3668:3: lv_componentValueList_2_0= ruleComponentValueList
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSequenceValueAccess().getComponentValueListComponentValueListParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleComponentValueList_in_ruleSequenceValue8542);
                    lv_componentValueList_2_0=ruleComponentValueList();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSequenceValueRule());
                      	        }
                             		set(
                             			current, 
                             			"componentValueList",
                              		lv_componentValueList_2_0, 
                              		"ComponentValueList");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,33,FOLLOW_33_in_ruleSequenceValue8555); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getSequenceValueAccess().getRightCurlyBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceValue"


    // $ANTLR start "entryRuleComponentValueList"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3696:1: entryRuleComponentValueList returns [EObject current=null] : iv_ruleComponentValueList= ruleComponentValueList EOF ;
    public final EObject entryRuleComponentValueList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleComponentValueList = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3697:2: (iv_ruleComponentValueList= ruleComponentValueList EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3698:2: iv_ruleComponentValueList= ruleComponentValueList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getComponentValueListRule()); 
            }
            pushFollow(FOLLOW_ruleComponentValueList_in_entryRuleComponentValueList8591);
            iv_ruleComponentValueList=ruleComponentValueList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleComponentValueList; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleComponentValueList8601); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleComponentValueList"


    // $ANTLR start "ruleComponentValueList"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3705:1: ruleComponentValueList returns [EObject current=null] : ( ( (lv_values_0_0= ruleNamedValue ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleNamedValue ) ) )* ) ;
    public final EObject ruleComponentValueList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_values_0_0 = null;

        EObject lv_values_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3708:28: ( ( ( (lv_values_0_0= ruleNamedValue ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleNamedValue ) ) )* ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3709:1: ( ( (lv_values_0_0= ruleNamedValue ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleNamedValue ) ) )* )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3709:1: ( ( (lv_values_0_0= ruleNamedValue ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleNamedValue ) ) )* )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3709:2: ( (lv_values_0_0= ruleNamedValue ) ) (otherlv_1= ',' ( (lv_values_2_0= ruleNamedValue ) ) )*
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3709:2: ( (lv_values_0_0= ruleNamedValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3710:1: (lv_values_0_0= ruleNamedValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3710:1: (lv_values_0_0= ruleNamedValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3711:3: lv_values_0_0= ruleNamedValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getComponentValueListAccess().getValuesNamedValueParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleNamedValue_in_ruleComponentValueList8647);
            lv_values_0_0=ruleNamedValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getComponentValueListRule());
              	        }
                     		add(
                     			current, 
                     			"values",
                      		lv_values_0_0, 
                      		"NamedValue");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3727:2: (otherlv_1= ',' ( (lv_values_2_0= ruleNamedValue ) ) )*
            loop49:
            do {
                int alt49=2;
                int LA49_0 = input.LA(1);

                if ( (LA49_0==25) ) {
                    alt49=1;
                }


                switch (alt49) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3727:4: otherlv_1= ',' ( (lv_values_2_0= ruleNamedValue ) )
            	    {
            	    otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleComponentValueList8660); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getComponentValueListAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3731:1: ( (lv_values_2_0= ruleNamedValue ) )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3732:1: (lv_values_2_0= ruleNamedValue )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3732:1: (lv_values_2_0= ruleNamedValue )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3733:3: lv_values_2_0= ruleNamedValue
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getComponentValueListAccess().getValuesNamedValueParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleNamedValue_in_ruleComponentValueList8681);
            	    lv_values_2_0=ruleNamedValue();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getComponentValueListRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"values",
            	              		lv_values_2_0, 
            	              		"NamedValue");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop49;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleComponentValueList"


    // $ANTLR start "entryRuleSequenceOfType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3757:1: entryRuleSequenceOfType returns [EObject current=null] : iv_ruleSequenceOfType= ruleSequenceOfType EOF ;
    public final EObject entryRuleSequenceOfType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSequenceOfType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3758:2: (iv_ruleSequenceOfType= ruleSequenceOfType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3759:2: iv_ruleSequenceOfType= ruleSequenceOfType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSequenceOfTypeRule()); 
            }
            pushFollow(FOLLOW_ruleSequenceOfType_in_entryRuleSequenceOfType8719);
            iv_ruleSequenceOfType=ruleSequenceOfType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSequenceOfType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSequenceOfType8729); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSequenceOfType"


    // $ANTLR start "ruleSequenceOfType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3766:1: ruleSequenceOfType returns [EObject current=null] : (otherlv_0= 'SEQUENCE' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) ) ) ;
    public final EObject ruleSequenceOfType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_constraint_1_0 = null;

        EObject lv_type_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3769:28: ( (otherlv_0= 'SEQUENCE' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3770:1: (otherlv_0= 'SEQUENCE' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3770:1: (otherlv_0= 'SEQUENCE' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3770:3: otherlv_0= 'SEQUENCE' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,47,FOLLOW_47_in_ruleSequenceOfType8766); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSequenceOfTypeAccess().getSEQUENCEKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3774:1: ( (lv_constraint_1_0= ruleConstraint ) )?
            int alt50=2;
            int LA50_0 = input.LA(1);

            if ( (LA50_0==34) ) {
                alt50=1;
            }
            switch (alt50) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3775:1: (lv_constraint_1_0= ruleConstraint )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3775:1: (lv_constraint_1_0= ruleConstraint )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3776:3: lv_constraint_1_0= ruleConstraint
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSequenceOfTypeAccess().getConstraintConstraintParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleConstraint_in_ruleSequenceOfType8787);
                    lv_constraint_1_0=ruleConstraint();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSequenceOfTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"constraint",
                              		lv_constraint_1_0, 
                              		"Constraint");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,54,FOLLOW_54_in_ruleSequenceOfType8800); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getSequenceOfTypeAccess().getOFKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3796:1: ( (lv_type_3_0= ruleType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3797:1: (lv_type_3_0= ruleType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3797:1: (lv_type_3_0= ruleType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3798:3: lv_type_3_0= ruleType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSequenceOfTypeAccess().getTypeTypeParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleType_in_ruleSequenceOfType8821);
            lv_type_3_0=ruleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSequenceOfTypeRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_3_0, 
                      		"Type");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSequenceOfType"


    // $ANTLR start "entryRuleSetType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3822:1: entryRuleSetType returns [EObject current=null] : iv_ruleSetType= ruleSetType EOF ;
    public final EObject entryRuleSetType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSetType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3823:2: (iv_ruleSetType= ruleSetType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3824:2: iv_ruleSetType= ruleSetType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSetTypeRule()); 
            }
            pushFollow(FOLLOW_ruleSetType_in_entryRuleSetType8857);
            iv_ruleSetType=ruleSetType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSetType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSetType8867); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSetType"


    // $ANTLR start "ruleSetType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3831:1: ruleSetType returns [EObject current=null] : ( () otherlv_1= 'SET' otherlv_2= '{' ( ( ( (lv_extensionAndException_3_0= ruleExtensionAndException ) ) ( ruleExtensionMarker )? ) | ( (lv_componentTypeList_5_0= ruleComponentTypeList ) ) )? otherlv_6= '}' ) ;
    public final EObject ruleSetType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_6=null;
        EObject lv_extensionAndException_3_0 = null;

        EObject lv_componentTypeList_5_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3834:28: ( ( () otherlv_1= 'SET' otherlv_2= '{' ( ( ( (lv_extensionAndException_3_0= ruleExtensionAndException ) ) ( ruleExtensionMarker )? ) | ( (lv_componentTypeList_5_0= ruleComponentTypeList ) ) )? otherlv_6= '}' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3835:1: ( () otherlv_1= 'SET' otherlv_2= '{' ( ( ( (lv_extensionAndException_3_0= ruleExtensionAndException ) ) ( ruleExtensionMarker )? ) | ( (lv_componentTypeList_5_0= ruleComponentTypeList ) ) )? otherlv_6= '}' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3835:1: ( () otherlv_1= 'SET' otherlv_2= '{' ( ( ( (lv_extensionAndException_3_0= ruleExtensionAndException ) ) ( ruleExtensionMarker )? ) | ( (lv_componentTypeList_5_0= ruleComponentTypeList ) ) )? otherlv_6= '}' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3835:2: () otherlv_1= 'SET' otherlv_2= '{' ( ( ( (lv_extensionAndException_3_0= ruleExtensionAndException ) ) ( ruleExtensionMarker )? ) | ( (lv_componentTypeList_5_0= ruleComponentTypeList ) ) )? otherlv_6= '}'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3835:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3836:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getSetTypeAccess().getSetTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,58,FOLLOW_58_in_ruleSetType8913); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getSetTypeAccess().getSETKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,32,FOLLOW_32_in_ruleSetType8925); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getSetTypeAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3849:1: ( ( ( (lv_extensionAndException_3_0= ruleExtensionAndException ) ) ( ruleExtensionMarker )? ) | ( (lv_componentTypeList_5_0= ruleComponentTypeList ) ) )?
            int alt52=3;
            int LA52_0 = input.LA(1);

            if ( (LA52_0==37) ) {
                alt52=1;
            }
            else if ( (LA52_0==RULE_ID||LA52_0==53) ) {
                alt52=2;
            }
            switch (alt52) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3849:2: ( ( (lv_extensionAndException_3_0= ruleExtensionAndException ) ) ( ruleExtensionMarker )? )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3849:2: ( ( (lv_extensionAndException_3_0= ruleExtensionAndException ) ) ( ruleExtensionMarker )? )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3849:3: ( (lv_extensionAndException_3_0= ruleExtensionAndException ) ) ( ruleExtensionMarker )?
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3849:3: ( (lv_extensionAndException_3_0= ruleExtensionAndException ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3850:1: (lv_extensionAndException_3_0= ruleExtensionAndException )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3850:1: (lv_extensionAndException_3_0= ruleExtensionAndException )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3851:3: lv_extensionAndException_3_0= ruleExtensionAndException
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSetTypeAccess().getExtensionAndExceptionExtensionAndExceptionParserRuleCall_3_0_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleExtensionAndException_in_ruleSetType8948);
                    lv_extensionAndException_3_0=ruleExtensionAndException();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSetTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"extensionAndException",
                              		lv_extensionAndException_3_0, 
                              		"ExtensionAndException");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3867:2: ( ruleExtensionMarker )?
                    int alt51=2;
                    int LA51_0 = input.LA(1);

                    if ( (LA51_0==25) ) {
                        alt51=1;
                    }
                    switch (alt51) {
                        case 1 :
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3868:5: ruleExtensionMarker
                            {
                            if ( state.backtracking==0 ) {
                               
                                      newCompositeNode(grammarAccess.getSetTypeAccess().getExtensionMarkerParserRuleCall_3_0_1()); 
                                  
                            }
                            pushFollow(FOLLOW_ruleExtensionMarker_in_ruleSetType8965);
                            ruleExtensionMarker();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {
                               
                                      afterParserOrEnumRuleCall();
                                  
                            }

                            }
                            break;

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3876:6: ( (lv_componentTypeList_5_0= ruleComponentTypeList ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3876:6: ( (lv_componentTypeList_5_0= ruleComponentTypeList ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3877:1: (lv_componentTypeList_5_0= ruleComponentTypeList )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3877:1: (lv_componentTypeList_5_0= ruleComponentTypeList )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3878:3: lv_componentTypeList_5_0= ruleComponentTypeList
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSetTypeAccess().getComponentTypeListComponentTypeListParserRuleCall_3_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleComponentTypeList_in_ruleSetType8994);
                    lv_componentTypeList_5_0=ruleComponentTypeList();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSetTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"componentTypeList",
                              		lv_componentTypeList_5_0, 
                              		"ComponentTypeList");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }

            otherlv_6=(Token)match(input,33,FOLLOW_33_in_ruleSetType9008); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_6, grammarAccess.getSetTypeAccess().getRightCurlyBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSetType"


    // $ANTLR start "entryRuleSetOfType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3906:1: entryRuleSetOfType returns [EObject current=null] : iv_ruleSetOfType= ruleSetOfType EOF ;
    public final EObject entryRuleSetOfType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSetOfType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3907:2: (iv_ruleSetOfType= ruleSetOfType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3908:2: iv_ruleSetOfType= ruleSetOfType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSetOfTypeRule()); 
            }
            pushFollow(FOLLOW_ruleSetOfType_in_entryRuleSetOfType9044);
            iv_ruleSetOfType=ruleSetOfType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSetOfType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSetOfType9054); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSetOfType"


    // $ANTLR start "ruleSetOfType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3915:1: ruleSetOfType returns [EObject current=null] : (otherlv_0= 'SET' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) ) ) ;
    public final EObject ruleSetOfType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_constraint_1_0 = null;

        EObject lv_type_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3918:28: ( (otherlv_0= 'SET' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3919:1: (otherlv_0= 'SET' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3919:1: (otherlv_0= 'SET' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3919:3: otherlv_0= 'SET' ( (lv_constraint_1_0= ruleConstraint ) )? otherlv_2= 'OF' ( (lv_type_3_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,58,FOLLOW_58_in_ruleSetOfType9091); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSetOfTypeAccess().getSETKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3923:1: ( (lv_constraint_1_0= ruleConstraint ) )?
            int alt53=2;
            int LA53_0 = input.LA(1);

            if ( (LA53_0==34) ) {
                alt53=1;
            }
            switch (alt53) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3924:1: (lv_constraint_1_0= ruleConstraint )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3924:1: (lv_constraint_1_0= ruleConstraint )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3925:3: lv_constraint_1_0= ruleConstraint
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getSetOfTypeAccess().getConstraintConstraintParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleConstraint_in_ruleSetOfType9112);
                    lv_constraint_1_0=ruleConstraint();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getSetOfTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"constraint",
                              		lv_constraint_1_0, 
                              		"Constraint");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,54,FOLLOW_54_in_ruleSetOfType9125); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getSetOfTypeAccess().getOFKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3945:1: ( (lv_type_3_0= ruleType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3946:1: (lv_type_3_0= ruleType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3946:1: (lv_type_3_0= ruleType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3947:3: lv_type_3_0= ruleType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSetOfTypeAccess().getTypeTypeParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleType_in_ruleSetOfType9146);
            lv_type_3_0=ruleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSetOfTypeRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_3_0, 
                      		"Type");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSetOfType"


    // $ANTLR start "entryRuleChoiceType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3971:1: entryRuleChoiceType returns [EObject current=null] : iv_ruleChoiceType= ruleChoiceType EOF ;
    public final EObject entryRuleChoiceType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChoiceType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3972:2: (iv_ruleChoiceType= ruleChoiceType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3973:2: iv_ruleChoiceType= ruleChoiceType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getChoiceTypeRule()); 
            }
            pushFollow(FOLLOW_ruleChoiceType_in_entryRuleChoiceType9182);
            iv_ruleChoiceType=ruleChoiceType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleChoiceType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleChoiceType9192); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleChoiceType"


    // $ANTLR start "ruleChoiceType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3980:1: ruleChoiceType returns [EObject current=null] : ( () otherlv_1= 'CHOICE' otherlv_2= '{' ( (lv_alternativeTypeList_3_0= ruleAlternativeTypeList ) ) (otherlv_4= ',' ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList ) )? ( ruleExtensionMarker )? )? otherlv_8= '}' ) ;
    public final EObject ruleChoiceType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_8=null;
        EObject lv_alternativeTypeList_3_0 = null;

        EObject lv_extensionAndException_5_0 = null;

        EObject lv_extensionAdditionAlternativesList_6_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3983:28: ( ( () otherlv_1= 'CHOICE' otherlv_2= '{' ( (lv_alternativeTypeList_3_0= ruleAlternativeTypeList ) ) (otherlv_4= ',' ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList ) )? ( ruleExtensionMarker )? )? otherlv_8= '}' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3984:1: ( () otherlv_1= 'CHOICE' otherlv_2= '{' ( (lv_alternativeTypeList_3_0= ruleAlternativeTypeList ) ) (otherlv_4= ',' ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList ) )? ( ruleExtensionMarker )? )? otherlv_8= '}' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3984:1: ( () otherlv_1= 'CHOICE' otherlv_2= '{' ( (lv_alternativeTypeList_3_0= ruleAlternativeTypeList ) ) (otherlv_4= ',' ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList ) )? ( ruleExtensionMarker )? )? otherlv_8= '}' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3984:2: () otherlv_1= 'CHOICE' otherlv_2= '{' ( (lv_alternativeTypeList_3_0= ruleAlternativeTypeList ) ) (otherlv_4= ',' ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList ) )? ( ruleExtensionMarker )? )? otherlv_8= '}'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3984:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3985:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getChoiceTypeAccess().getChoiceTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,59,FOLLOW_59_in_ruleChoiceType9238); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getChoiceTypeAccess().getCHOICEKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,32,FOLLOW_32_in_ruleChoiceType9250); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getChoiceTypeAccess().getLeftCurlyBracketKeyword_2());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3998:1: ( (lv_alternativeTypeList_3_0= ruleAlternativeTypeList ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3999:1: (lv_alternativeTypeList_3_0= ruleAlternativeTypeList )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:3999:1: (lv_alternativeTypeList_3_0= ruleAlternativeTypeList )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4000:3: lv_alternativeTypeList_3_0= ruleAlternativeTypeList
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getChoiceTypeAccess().getAlternativeTypeListAlternativeTypeListParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleAlternativeTypeList_in_ruleChoiceType9271);
            lv_alternativeTypeList_3_0=ruleAlternativeTypeList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getChoiceTypeRule());
              	        }
                     		set(
                     			current, 
                     			"alternativeTypeList",
                      		lv_alternativeTypeList_3_0, 
                      		"AlternativeTypeList");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4016:2: (otherlv_4= ',' ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList ) )? ( ruleExtensionMarker )? )?
            int alt56=2;
            int LA56_0 = input.LA(1);

            if ( (LA56_0==25) ) {
                alt56=1;
            }
            switch (alt56) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4016:4: otherlv_4= ',' ( (lv_extensionAndException_5_0= ruleExtensionAndException ) ) ( (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList ) )? ( ruleExtensionMarker )?
                    {
                    otherlv_4=(Token)match(input,25,FOLLOW_25_in_ruleChoiceType9284); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_4, grammarAccess.getChoiceTypeAccess().getCommaKeyword_4_0());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4020:1: ( (lv_extensionAndException_5_0= ruleExtensionAndException ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4021:1: (lv_extensionAndException_5_0= ruleExtensionAndException )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4021:1: (lv_extensionAndException_5_0= ruleExtensionAndException )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4022:3: lv_extensionAndException_5_0= ruleExtensionAndException
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getChoiceTypeAccess().getExtensionAndExceptionExtensionAndExceptionParserRuleCall_4_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleExtensionAndException_in_ruleChoiceType9305);
                    lv_extensionAndException_5_0=ruleExtensionAndException();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getChoiceTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"extensionAndException",
                              		lv_extensionAndException_5_0, 
                              		"ExtensionAndException");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4038:2: ( (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList ) )?
                    int alt54=2;
                    int LA54_0 = input.LA(1);

                    if ( (LA54_0==RULE_ID||LA54_0==49) ) {
                        alt54=1;
                    }
                    switch (alt54) {
                        case 1 :
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4039:1: (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList )
                            {
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4039:1: (lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList )
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4040:3: lv_extensionAdditionAlternativesList_6_0= ruleExtensionAdditionAlternativesList
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getChoiceTypeAccess().getExtensionAdditionAlternativesListExtensionAdditionAlternativesListParserRuleCall_4_2_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleExtensionAdditionAlternativesList_in_ruleChoiceType9326);
                            lv_extensionAdditionAlternativesList_6_0=ruleExtensionAdditionAlternativesList();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getChoiceTypeRule());
                              	        }
                                     		set(
                                     			current, 
                                     			"extensionAdditionAlternativesList",
                                      		lv_extensionAdditionAlternativesList_6_0, 
                                      		"ExtensionAdditionAlternativesList");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }
                            break;

                    }

                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4056:3: ( ruleExtensionMarker )?
                    int alt55=2;
                    int LA55_0 = input.LA(1);

                    if ( (LA55_0==25) ) {
                        alt55=1;
                    }
                    switch (alt55) {
                        case 1 :
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4057:5: ruleExtensionMarker
                            {
                            if ( state.backtracking==0 ) {
                               
                                      newCompositeNode(grammarAccess.getChoiceTypeAccess().getExtensionMarkerParserRuleCall_4_3()); 
                                  
                            }
                            pushFollow(FOLLOW_ruleExtensionMarker_in_ruleChoiceType9344);
                            ruleExtensionMarker();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {
                               
                                      afterParserOrEnumRuleCall();
                                  
                            }

                            }
                            break;

                    }


                    }
                    break;

            }

            otherlv_8=(Token)match(input,33,FOLLOW_33_in_ruleChoiceType9359); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_8, grammarAccess.getChoiceTypeAccess().getRightCurlyBracketKeyword_5());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleChoiceType"


    // $ANTLR start "entryRuleAlternativeTypeList"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4076:1: entryRuleAlternativeTypeList returns [EObject current=null] : iv_ruleAlternativeTypeList= ruleAlternativeTypeList EOF ;
    public final EObject entryRuleAlternativeTypeList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleAlternativeTypeList = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4077:2: (iv_ruleAlternativeTypeList= ruleAlternativeTypeList EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4078:2: iv_ruleAlternativeTypeList= ruleAlternativeTypeList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getAlternativeTypeListRule()); 
            }
            pushFollow(FOLLOW_ruleAlternativeTypeList_in_entryRuleAlternativeTypeList9395);
            iv_ruleAlternativeTypeList=ruleAlternativeTypeList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleAlternativeTypeList; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleAlternativeTypeList9405); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleAlternativeTypeList"


    // $ANTLR start "ruleAlternativeTypeList"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4085:1: ruleAlternativeTypeList returns [EObject current=null] : ( ( (lv_namedTypes_0_0= ruleNamedType ) ) (otherlv_1= ',' ( (lv_namedTypes_2_0= ruleNamedType ) ) )* ) ;
    public final EObject ruleAlternativeTypeList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_namedTypes_0_0 = null;

        EObject lv_namedTypes_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4088:28: ( ( ( (lv_namedTypes_0_0= ruleNamedType ) ) (otherlv_1= ',' ( (lv_namedTypes_2_0= ruleNamedType ) ) )* ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4089:1: ( ( (lv_namedTypes_0_0= ruleNamedType ) ) (otherlv_1= ',' ( (lv_namedTypes_2_0= ruleNamedType ) ) )* )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4089:1: ( ( (lv_namedTypes_0_0= ruleNamedType ) ) (otherlv_1= ',' ( (lv_namedTypes_2_0= ruleNamedType ) ) )* )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4089:2: ( (lv_namedTypes_0_0= ruleNamedType ) ) (otherlv_1= ',' ( (lv_namedTypes_2_0= ruleNamedType ) ) )*
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4089:2: ( (lv_namedTypes_0_0= ruleNamedType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4090:1: (lv_namedTypes_0_0= ruleNamedType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4090:1: (lv_namedTypes_0_0= ruleNamedType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4091:3: lv_namedTypes_0_0= ruleNamedType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getAlternativeTypeListAccess().getNamedTypesNamedTypeParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleNamedType_in_ruleAlternativeTypeList9451);
            lv_namedTypes_0_0=ruleNamedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getAlternativeTypeListRule());
              	        }
                     		add(
                     			current, 
                     			"namedTypes",
                      		lv_namedTypes_0_0, 
                      		"NamedType");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4107:2: (otherlv_1= ',' ( (lv_namedTypes_2_0= ruleNamedType ) ) )*
            loop57:
            do {
                int alt57=2;
                int LA57_0 = input.LA(1);

                if ( (LA57_0==25) ) {
                    int LA57_1 = input.LA(2);

                    if ( (LA57_1==RULE_ID) ) {
                        alt57=1;
                    }


                }


                switch (alt57) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4107:4: otherlv_1= ',' ( (lv_namedTypes_2_0= ruleNamedType ) )
            	    {
            	    otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleAlternativeTypeList9464); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getAlternativeTypeListAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4111:1: ( (lv_namedTypes_2_0= ruleNamedType ) )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4112:1: (lv_namedTypes_2_0= ruleNamedType )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4112:1: (lv_namedTypes_2_0= ruleNamedType )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4113:3: lv_namedTypes_2_0= ruleNamedType
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getAlternativeTypeListAccess().getNamedTypesNamedTypeParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleNamedType_in_ruleAlternativeTypeList9485);
            	    lv_namedTypes_2_0=ruleNamedType();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getAlternativeTypeListRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"namedTypes",
            	              		lv_namedTypes_2_0, 
            	              		"NamedType");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop57;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleAlternativeTypeList"


    // $ANTLR start "entryRuleExtensionAdditionAlternativesGroup"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4137:1: entryRuleExtensionAdditionAlternativesGroup returns [EObject current=null] : iv_ruleExtensionAdditionAlternativesGroup= ruleExtensionAdditionAlternativesGroup EOF ;
    public final EObject entryRuleExtensionAdditionAlternativesGroup() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionAdditionAlternativesGroup = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4138:2: (iv_ruleExtensionAdditionAlternativesGroup= ruleExtensionAdditionAlternativesGroup EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4139:2: iv_ruleExtensionAdditionAlternativesGroup= ruleExtensionAdditionAlternativesGroup EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExtensionAdditionAlternativesGroupRule()); 
            }
            pushFollow(FOLLOW_ruleExtensionAdditionAlternativesGroup_in_entryRuleExtensionAdditionAlternativesGroup9523);
            iv_ruleExtensionAdditionAlternativesGroup=ruleExtensionAdditionAlternativesGroup();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExtensionAdditionAlternativesGroup; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionAdditionAlternativesGroup9533); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionAdditionAlternativesGroup"


    // $ANTLR start "ruleExtensionAdditionAlternativesGroup"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4146:1: ruleExtensionAdditionAlternativesGroup returns [EObject current=null] : (otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_alternativeTypeList_2_0= ruleAlternativeTypeList ) ) otherlv_3= ']]' ) ;
    public final EObject ruleExtensionAdditionAlternativesGroup() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        EObject lv_versionNumber_1_0 = null;

        EObject lv_alternativeTypeList_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4149:28: ( (otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_alternativeTypeList_2_0= ruleAlternativeTypeList ) ) otherlv_3= ']]' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4150:1: (otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_alternativeTypeList_2_0= ruleAlternativeTypeList ) ) otherlv_3= ']]' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4150:1: (otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_alternativeTypeList_2_0= ruleAlternativeTypeList ) ) otherlv_3= ']]' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4150:3: otherlv_0= '[[' ( (lv_versionNumber_1_0= ruleVersionNumber ) ) ( (lv_alternativeTypeList_2_0= ruleAlternativeTypeList ) ) otherlv_3= ']]'
            {
            otherlv_0=(Token)match(input,49,FOLLOW_49_in_ruleExtensionAdditionAlternativesGroup9570); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getExtensionAdditionAlternativesGroupAccess().getLeftSquareBracketLeftSquareBracketKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4154:1: ( (lv_versionNumber_1_0= ruleVersionNumber ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4155:1: (lv_versionNumber_1_0= ruleVersionNumber )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4155:1: (lv_versionNumber_1_0= ruleVersionNumber )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4156:3: lv_versionNumber_1_0= ruleVersionNumber
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExtensionAdditionAlternativesGroupAccess().getVersionNumberVersionNumberParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleVersionNumber_in_ruleExtensionAdditionAlternativesGroup9591);
            lv_versionNumber_1_0=ruleVersionNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExtensionAdditionAlternativesGroupRule());
              	        }
                     		set(
                     			current, 
                     			"versionNumber",
                      		lv_versionNumber_1_0, 
                      		"VersionNumber");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4172:2: ( (lv_alternativeTypeList_2_0= ruleAlternativeTypeList ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4173:1: (lv_alternativeTypeList_2_0= ruleAlternativeTypeList )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4173:1: (lv_alternativeTypeList_2_0= ruleAlternativeTypeList )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4174:3: lv_alternativeTypeList_2_0= ruleAlternativeTypeList
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExtensionAdditionAlternativesGroupAccess().getAlternativeTypeListAlternativeTypeListParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleAlternativeTypeList_in_ruleExtensionAdditionAlternativesGroup9612);
            lv_alternativeTypeList_2_0=ruleAlternativeTypeList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExtensionAdditionAlternativesGroupRule());
              	        }
                     		set(
                     			current, 
                     			"alternativeTypeList",
                      		lv_alternativeTypeList_2_0, 
                      		"AlternativeTypeList");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_3=(Token)match(input,50,FOLLOW_50_in_ruleExtensionAdditionAlternativesGroup9624); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getExtensionAdditionAlternativesGroupAccess().getRightSquareBracketRightSquareBracketKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionAdditionAlternativesGroup"


    // $ANTLR start "entryRuleExtensionAdditionAlternative"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4202:1: entryRuleExtensionAdditionAlternative returns [EObject current=null] : iv_ruleExtensionAdditionAlternative= ruleExtensionAdditionAlternative EOF ;
    public final EObject entryRuleExtensionAdditionAlternative() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionAdditionAlternative = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4203:2: (iv_ruleExtensionAdditionAlternative= ruleExtensionAdditionAlternative EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4204:2: iv_ruleExtensionAdditionAlternative= ruleExtensionAdditionAlternative EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExtensionAdditionAlternativeRule()); 
            }
            pushFollow(FOLLOW_ruleExtensionAdditionAlternative_in_entryRuleExtensionAdditionAlternative9660);
            iv_ruleExtensionAdditionAlternative=ruleExtensionAdditionAlternative();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExtensionAdditionAlternative; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionAdditionAlternative9670); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionAdditionAlternative"


    // $ANTLR start "ruleExtensionAdditionAlternative"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4211:1: ruleExtensionAdditionAlternative returns [EObject current=null] : (this_ExtensionAdditionAlternativesGroup_0= ruleExtensionAdditionAlternativesGroup | this_NamedType_1= ruleNamedType ) ;
    public final EObject ruleExtensionAdditionAlternative() throws RecognitionException {
        EObject current = null;

        EObject this_ExtensionAdditionAlternativesGroup_0 = null;

        EObject this_NamedType_1 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4214:28: ( (this_ExtensionAdditionAlternativesGroup_0= ruleExtensionAdditionAlternativesGroup | this_NamedType_1= ruleNamedType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4215:1: (this_ExtensionAdditionAlternativesGroup_0= ruleExtensionAdditionAlternativesGroup | this_NamedType_1= ruleNamedType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4215:1: (this_ExtensionAdditionAlternativesGroup_0= ruleExtensionAdditionAlternativesGroup | this_NamedType_1= ruleNamedType )
            int alt58=2;
            int LA58_0 = input.LA(1);

            if ( (LA58_0==49) ) {
                alt58=1;
            }
            else if ( (LA58_0==RULE_ID) ) {
                alt58=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 58, 0, input);

                throw nvae;
            }
            switch (alt58) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4216:5: this_ExtensionAdditionAlternativesGroup_0= ruleExtensionAdditionAlternativesGroup
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getExtensionAdditionAlternativeAccess().getExtensionAdditionAlternativesGroupParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleExtensionAdditionAlternativesGroup_in_ruleExtensionAdditionAlternative9717);
                    this_ExtensionAdditionAlternativesGroup_0=ruleExtensionAdditionAlternativesGroup();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ExtensionAdditionAlternativesGroup_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4226:5: this_NamedType_1= ruleNamedType
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getExtensionAdditionAlternativeAccess().getNamedTypeParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNamedType_in_ruleExtensionAdditionAlternative9744);
                    this_NamedType_1=ruleNamedType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NamedType_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionAdditionAlternative"


    // $ANTLR start "entryRuleExtensionAdditionAlternativesList"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4242:1: entryRuleExtensionAdditionAlternativesList returns [EObject current=null] : iv_ruleExtensionAdditionAlternativesList= ruleExtensionAdditionAlternativesList EOF ;
    public final EObject entryRuleExtensionAdditionAlternativesList() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExtensionAdditionAlternativesList = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4243:2: (iv_ruleExtensionAdditionAlternativesList= ruleExtensionAdditionAlternativesList EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4244:2: iv_ruleExtensionAdditionAlternativesList= ruleExtensionAdditionAlternativesList EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExtensionAdditionAlternativesListRule()); 
            }
            pushFollow(FOLLOW_ruleExtensionAdditionAlternativesList_in_entryRuleExtensionAdditionAlternativesList9779);
            iv_ruleExtensionAdditionAlternativesList=ruleExtensionAdditionAlternativesList();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExtensionAdditionAlternativesList; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExtensionAdditionAlternativesList9789); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExtensionAdditionAlternativesList"


    // $ANTLR start "ruleExtensionAdditionAlternativesList"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4251:1: ruleExtensionAdditionAlternativesList returns [EObject current=null] : ( ( (lv_extensionAdditionAlternative_0_0= ruleExtensionAdditionAlternative ) ) (otherlv_1= ',' ( (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative ) ) )* ) ;
    public final EObject ruleExtensionAdditionAlternativesList() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_extensionAdditionAlternative_0_0 = null;

        EObject lv_extensionAdditionAlternative_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4254:28: ( ( ( (lv_extensionAdditionAlternative_0_0= ruleExtensionAdditionAlternative ) ) (otherlv_1= ',' ( (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative ) ) )* ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4255:1: ( ( (lv_extensionAdditionAlternative_0_0= ruleExtensionAdditionAlternative ) ) (otherlv_1= ',' ( (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative ) ) )* )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4255:1: ( ( (lv_extensionAdditionAlternative_0_0= ruleExtensionAdditionAlternative ) ) (otherlv_1= ',' ( (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative ) ) )* )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4255:2: ( (lv_extensionAdditionAlternative_0_0= ruleExtensionAdditionAlternative ) ) (otherlv_1= ',' ( (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative ) ) )*
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4255:2: ( (lv_extensionAdditionAlternative_0_0= ruleExtensionAdditionAlternative ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4256:1: (lv_extensionAdditionAlternative_0_0= ruleExtensionAdditionAlternative )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4256:1: (lv_extensionAdditionAlternative_0_0= ruleExtensionAdditionAlternative )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4257:3: lv_extensionAdditionAlternative_0_0= ruleExtensionAdditionAlternative
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExtensionAdditionAlternativesListAccess().getExtensionAdditionAlternativeExtensionAdditionAlternativeParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleExtensionAdditionAlternative_in_ruleExtensionAdditionAlternativesList9835);
            lv_extensionAdditionAlternative_0_0=ruleExtensionAdditionAlternative();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExtensionAdditionAlternativesListRule());
              	        }
                     		add(
                     			current, 
                     			"extensionAdditionAlternative",
                      		lv_extensionAdditionAlternative_0_0, 
                      		"ExtensionAdditionAlternative");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4273:2: (otherlv_1= ',' ( (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative ) ) )*
            loop59:
            do {
                int alt59=2;
                int LA59_0 = input.LA(1);

                if ( (LA59_0==25) ) {
                    int LA59_1 = input.LA(2);

                    if ( (LA59_1==RULE_ID||LA59_1==49) ) {
                        alt59=1;
                    }


                }


                switch (alt59) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4273:4: otherlv_1= ',' ( (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative ) )
            	    {
            	    otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleExtensionAdditionAlternativesList9848); if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	          	newLeafNode(otherlv_1, grammarAccess.getExtensionAdditionAlternativesListAccess().getCommaKeyword_1_0());
            	          
            	    }
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4277:1: ( (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative ) )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4278:1: (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4278:1: (lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4279:3: lv_extensionAdditionAlternative_2_0= ruleExtensionAdditionAlternative
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getExtensionAdditionAlternativesListAccess().getExtensionAdditionAlternativeExtensionAdditionAlternativeParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleExtensionAdditionAlternative_in_ruleExtensionAdditionAlternativesList9869);
            	    lv_extensionAdditionAlternative_2_0=ruleExtensionAdditionAlternative();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getExtensionAdditionAlternativesListRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"extensionAdditionAlternative",
            	              		lv_extensionAdditionAlternative_2_0, 
            	              		"ExtensionAdditionAlternative");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop59;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExtensionAdditionAlternativesList"


    // $ANTLR start "entryRuleChoiceValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4303:1: entryRuleChoiceValue returns [EObject current=null] : iv_ruleChoiceValue= ruleChoiceValue EOF ;
    public final EObject entryRuleChoiceValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleChoiceValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4304:2: (iv_ruleChoiceValue= ruleChoiceValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4305:2: iv_ruleChoiceValue= ruleChoiceValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getChoiceValueRule()); 
            }
            pushFollow(FOLLOW_ruleChoiceValue_in_entryRuleChoiceValue9907);
            iv_ruleChoiceValue=ruleChoiceValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleChoiceValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleChoiceValue9917); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleChoiceValue"


    // $ANTLR start "ruleChoiceValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4312:1: ruleChoiceValue returns [EObject current=null] : ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleValue ) ) ) ;
    public final EObject ruleChoiceValue() throws RecognitionException {
        EObject current = null;

        Token lv_identifier_0_0=null;
        Token otherlv_1=null;
        EObject lv_value_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4315:28: ( ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleValue ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4316:1: ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleValue ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4316:1: ( ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleValue ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4316:2: ( (lv_identifier_0_0= RULE_ID ) ) otherlv_1= ':' ( (lv_value_2_0= ruleValue ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4316:2: ( (lv_identifier_0_0= RULE_ID ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4317:1: (lv_identifier_0_0= RULE_ID )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4317:1: (lv_identifier_0_0= RULE_ID )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4318:3: lv_identifier_0_0= RULE_ID
            {
            lv_identifier_0_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleChoiceValue9959); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              			newLeafNode(lv_identifier_0_0, grammarAccess.getChoiceValueAccess().getIdentifierIDTerminalRuleCall_0_0()); 
              		
            }
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElement(grammarAccess.getChoiceValueRule());
              	        }
                     		setWithLastConsumed(
                     			current, 
                     			"identifier",
                      		lv_identifier_0_0, 
                      		"ID");
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,48,FOLLOW_48_in_ruleChoiceValue9976); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getChoiceValueAccess().getColonKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4338:1: ( (lv_value_2_0= ruleValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4339:1: (lv_value_2_0= ruleValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4339:1: (lv_value_2_0= ruleValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4340:3: lv_value_2_0= ruleValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getChoiceValueAccess().getValueValueParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValue_in_ruleChoiceValue9997);
            lv_value_2_0=ruleValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getChoiceValueRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_2_0, 
                      		"Value");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleChoiceValue"


    // $ANTLR start "entryRulePrefixedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4364:1: entryRulePrefixedType returns [EObject current=null] : iv_rulePrefixedType= rulePrefixedType EOF ;
    public final EObject entryRulePrefixedType() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePrefixedType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4365:2: (iv_rulePrefixedType= rulePrefixedType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4366:2: iv_rulePrefixedType= rulePrefixedType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPrefixedTypeRule()); 
            }
            pushFollow(FOLLOW_rulePrefixedType_in_entryRulePrefixedType10033);
            iv_rulePrefixedType=rulePrefixedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePrefixedType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePrefixedType10043); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePrefixedType"


    // $ANTLR start "rulePrefixedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4373:1: rulePrefixedType returns [EObject current=null] : this_TaggedType_0= ruleTaggedType ;
    public final EObject rulePrefixedType() throws RecognitionException {
        EObject current = null;

        EObject this_TaggedType_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4376:28: (this_TaggedType_0= ruleTaggedType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4378:5: this_TaggedType_0= ruleTaggedType
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getPrefixedTypeAccess().getTaggedTypeParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleTaggedType_in_rulePrefixedType10089);
            this_TaggedType_0=ruleTaggedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_TaggedType_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePrefixedType"


    // $ANTLR start "entryRuleTaggedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4394:1: entryRuleTaggedType returns [EObject current=null] : iv_ruleTaggedType= ruleTaggedType EOF ;
    public final EObject entryRuleTaggedType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTaggedType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4395:2: (iv_ruleTaggedType= ruleTaggedType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4396:2: iv_ruleTaggedType= ruleTaggedType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTaggedTypeRule()); 
            }
            pushFollow(FOLLOW_ruleTaggedType_in_entryRuleTaggedType10123);
            iv_ruleTaggedType=ruleTaggedType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTaggedType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTaggedType10133); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTaggedType"


    // $ANTLR start "ruleTaggedType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4403:1: ruleTaggedType returns [EObject current=null] : ( ( (lv_tag_0_0= ruleTag ) ) ( (lv_tagSpec_1_0= ruleTagSpec ) )? ( (lv_type_2_0= ruleType ) ) ) ;
    public final EObject ruleTaggedType() throws RecognitionException {
        EObject current = null;

        EObject lv_tag_0_0 = null;

        AntlrDatatypeRuleToken lv_tagSpec_1_0 = null;

        EObject lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4406:28: ( ( ( (lv_tag_0_0= ruleTag ) ) ( (lv_tagSpec_1_0= ruleTagSpec ) )? ( (lv_type_2_0= ruleType ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4407:1: ( ( (lv_tag_0_0= ruleTag ) ) ( (lv_tagSpec_1_0= ruleTagSpec ) )? ( (lv_type_2_0= ruleType ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4407:1: ( ( (lv_tag_0_0= ruleTag ) ) ( (lv_tagSpec_1_0= ruleTagSpec ) )? ( (lv_type_2_0= ruleType ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4407:2: ( (lv_tag_0_0= ruleTag ) ) ( (lv_tagSpec_1_0= ruleTagSpec ) )? ( (lv_type_2_0= ruleType ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4407:2: ( (lv_tag_0_0= ruleTag ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4408:1: (lv_tag_0_0= ruleTag )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4408:1: (lv_tag_0_0= ruleTag )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4409:3: lv_tag_0_0= ruleTag
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTaggedTypeAccess().getTagTagParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleTag_in_ruleTaggedType10179);
            lv_tag_0_0=ruleTag();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTaggedTypeRule());
              	        }
                     		set(
                     			current, 
                     			"tag",
                      		lv_tag_0_0, 
                      		"Tag");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4425:2: ( (lv_tagSpec_1_0= ruleTagSpec ) )?
            int alt60=2;
            int LA60_0 = input.LA(1);

            if ( ((LA60_0>=19 && LA60_0<=20)) ) {
                alt60=1;
            }
            switch (alt60) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4426:1: (lv_tagSpec_1_0= ruleTagSpec )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4426:1: (lv_tagSpec_1_0= ruleTagSpec )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4427:3: lv_tagSpec_1_0= ruleTagSpec
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTaggedTypeAccess().getTagSpecTagSpecParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleTagSpec_in_ruleTaggedType10200);
                    lv_tagSpec_1_0=ruleTagSpec();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTaggedTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"tagSpec",
                              		lv_tagSpec_1_0, 
                              		"TagSpec");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4443:3: ( (lv_type_2_0= ruleType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4444:1: (lv_type_2_0= ruleType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4444:1: (lv_type_2_0= ruleType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4445:3: lv_type_2_0= ruleType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTaggedTypeAccess().getTypeTypeParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleType_in_ruleTaggedType10222);
            lv_type_2_0=ruleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTaggedTypeRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_2_0, 
                      		"Type");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTaggedType"


    // $ANTLR start "entryRuleTag"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4469:1: entryRuleTag returns [EObject current=null] : iv_ruleTag= ruleTag EOF ;
    public final EObject entryRuleTag() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTag = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4470:2: (iv_ruleTag= ruleTag EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4471:2: iv_ruleTag= ruleTag EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTagRule()); 
            }
            pushFollow(FOLLOW_ruleTag_in_entryRuleTag10258);
            iv_ruleTag=ruleTag();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTag; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTag10268); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTag"


    // $ANTLR start "ruleTag"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4478:1: ruleTag returns [EObject current=null] : (otherlv_0= '[' ( (lv_encodingReference_1_0= RULE_ID ) )? ( (lv_tagClass_2_0= ruleTagClass ) )? ( (lv_classNumber_3_0= ruleClassNumber ) ) otherlv_4= ']' ) ;
    public final EObject ruleTag() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_encodingReference_1_0=null;
        Token otherlv_4=null;
        AntlrDatatypeRuleToken lv_tagClass_2_0 = null;

        EObject lv_classNumber_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4481:28: ( (otherlv_0= '[' ( (lv_encodingReference_1_0= RULE_ID ) )? ( (lv_tagClass_2_0= ruleTagClass ) )? ( (lv_classNumber_3_0= ruleClassNumber ) ) otherlv_4= ']' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4482:1: (otherlv_0= '[' ( (lv_encodingReference_1_0= RULE_ID ) )? ( (lv_tagClass_2_0= ruleTagClass ) )? ( (lv_classNumber_3_0= ruleClassNumber ) ) otherlv_4= ']' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4482:1: (otherlv_0= '[' ( (lv_encodingReference_1_0= RULE_ID ) )? ( (lv_tagClass_2_0= ruleTagClass ) )? ( (lv_classNumber_3_0= ruleClassNumber ) ) otherlv_4= ']' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4482:3: otherlv_0= '[' ( (lv_encodingReference_1_0= RULE_ID ) )? ( (lv_tagClass_2_0= ruleTagClass ) )? ( (lv_classNumber_3_0= ruleClassNumber ) ) otherlv_4= ']'
            {
            otherlv_0=(Token)match(input,60,FOLLOW_60_in_ruleTag10305); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getTagAccess().getLeftSquareBracketKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4486:1: ( (lv_encodingReference_1_0= RULE_ID ) )?
            int alt61=2;
            int LA61_0 = input.LA(1);

            if ( (LA61_0==RULE_ID) ) {
                int LA61_1 = input.LA(2);

                if ( ((LA61_1>=RULE_ID && LA61_1<=RULE_LONG)||(LA61_1>=62 && LA61_1<=64)) ) {
                    alt61=1;
                }
            }
            switch (alt61) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4487:1: (lv_encodingReference_1_0= RULE_ID )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4487:1: (lv_encodingReference_1_0= RULE_ID )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4488:3: lv_encodingReference_1_0= RULE_ID
                    {
                    lv_encodingReference_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTag10322); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_encodingReference_1_0, grammarAccess.getTagAccess().getEncodingReferenceIDTerminalRuleCall_1_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getTagRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"encodingReference",
                              		lv_encodingReference_1_0, 
                              		"ID");
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4504:3: ( (lv_tagClass_2_0= ruleTagClass ) )?
            int alt62=2;
            int LA62_0 = input.LA(1);

            if ( ((LA62_0>=62 && LA62_0<=64)) ) {
                alt62=1;
            }
            switch (alt62) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4505:1: (lv_tagClass_2_0= ruleTagClass )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4505:1: (lv_tagClass_2_0= ruleTagClass )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4506:3: lv_tagClass_2_0= ruleTagClass
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getTagAccess().getTagClassTagClassParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleTagClass_in_ruleTag10349);
                    lv_tagClass_2_0=ruleTagClass();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getTagRule());
                      	        }
                             		set(
                             			current, 
                             			"tagClass",
                              		lv_tagClass_2_0, 
                              		"TagClass");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4522:3: ( (lv_classNumber_3_0= ruleClassNumber ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4523:1: (lv_classNumber_3_0= ruleClassNumber )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4523:1: (lv_classNumber_3_0= ruleClassNumber )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4524:3: lv_classNumber_3_0= ruleClassNumber
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTagAccess().getClassNumberClassNumberParserRuleCall_3_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleClassNumber_in_ruleTag10371);
            lv_classNumber_3_0=ruleClassNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTagRule());
              	        }
                     		set(
                     			current, 
                     			"classNumber",
                      		lv_classNumber_3_0, 
                      		"ClassNumber");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_4=(Token)match(input,61,FOLLOW_61_in_ruleTag10383); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_4, grammarAccess.getTagAccess().getRightSquareBracketKeyword_4());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTag"


    // $ANTLR start "entryRuleTagSpec"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4552:1: entryRuleTagSpec returns [String current=null] : iv_ruleTagSpec= ruleTagSpec EOF ;
    public final String entryRuleTagSpec() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleTagSpec = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4553:2: (iv_ruleTagSpec= ruleTagSpec EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4554:2: iv_ruleTagSpec= ruleTagSpec EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTagSpecRule()); 
            }
            pushFollow(FOLLOW_ruleTagSpec_in_entryRuleTagSpec10420);
            iv_ruleTagSpec=ruleTagSpec();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTagSpec.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTagSpec10431); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTagSpec"


    // $ANTLR start "ruleTagSpec"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4561:1: ruleTagSpec returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'IMPLICIT' | kw= 'EXPLICIT' ) ;
    public final AntlrDatatypeRuleToken ruleTagSpec() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4564:28: ( (kw= 'IMPLICIT' | kw= 'EXPLICIT' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4565:1: (kw= 'IMPLICIT' | kw= 'EXPLICIT' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4565:1: (kw= 'IMPLICIT' | kw= 'EXPLICIT' )
            int alt63=2;
            int LA63_0 = input.LA(1);

            if ( (LA63_0==20) ) {
                alt63=1;
            }
            else if ( (LA63_0==19) ) {
                alt63=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 63, 0, input);

                throw nvae;
            }
            switch (alt63) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4566:2: kw= 'IMPLICIT'
                    {
                    kw=(Token)match(input,20,FOLLOW_20_in_ruleTagSpec10469); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getTagSpecAccess().getIMPLICITKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4573:2: kw= 'EXPLICIT'
                    {
                    kw=(Token)match(input,19,FOLLOW_19_in_ruleTagSpec10488); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getTagSpecAccess().getEXPLICITKeyword_1()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTagSpec"


    // $ANTLR start "entryRuleTagClass"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4586:1: entryRuleTagClass returns [String current=null] : iv_ruleTagClass= ruleTagClass EOF ;
    public final String entryRuleTagClass() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleTagClass = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4587:2: (iv_ruleTagClass= ruleTagClass EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4588:2: iv_ruleTagClass= ruleTagClass EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTagClassRule()); 
            }
            pushFollow(FOLLOW_ruleTagClass_in_entryRuleTagClass10529);
            iv_ruleTagClass=ruleTagClass();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTagClass.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTagClass10540); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTagClass"


    // $ANTLR start "ruleTagClass"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4595:1: ruleTagClass returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (kw= 'UNIVERSAL' | kw= 'APPLICATION' | kw= 'PRIVATE' ) ;
    public final AntlrDatatypeRuleToken ruleTagClass() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4598:28: ( (kw= 'UNIVERSAL' | kw= 'APPLICATION' | kw= 'PRIVATE' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4599:1: (kw= 'UNIVERSAL' | kw= 'APPLICATION' | kw= 'PRIVATE' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4599:1: (kw= 'UNIVERSAL' | kw= 'APPLICATION' | kw= 'PRIVATE' )
            int alt64=3;
            switch ( input.LA(1) ) {
            case 62:
                {
                alt64=1;
                }
                break;
            case 63:
                {
                alt64=2;
                }
                break;
            case 64:
                {
                alt64=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 64, 0, input);

                throw nvae;
            }

            switch (alt64) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4600:2: kw= 'UNIVERSAL'
                    {
                    kw=(Token)match(input,62,FOLLOW_62_in_ruleTagClass10578); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getTagClassAccess().getUNIVERSALKeyword_0()); 
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4607:2: kw= 'APPLICATION'
                    {
                    kw=(Token)match(input,63,FOLLOW_63_in_ruleTagClass10597); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getTagClassAccess().getAPPLICATIONKeyword_1()); 
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4614:2: kw= 'PRIVATE'
                    {
                    kw=(Token)match(input,64,FOLLOW_64_in_ruleTagClass10616); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getTagClassAccess().getPRIVATEKeyword_2()); 
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTagClass"


    // $ANTLR start "entryRuleClassNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4627:1: entryRuleClassNumber returns [EObject current=null] : iv_ruleClassNumber= ruleClassNumber EOF ;
    public final EObject entryRuleClassNumber() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleClassNumber = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4628:2: (iv_ruleClassNumber= ruleClassNumber EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4629:2: iv_ruleClassNumber= ruleClassNumber EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getClassNumberRule()); 
            }
            pushFollow(FOLLOW_ruleClassNumber_in_entryRuleClassNumber10656);
            iv_ruleClassNumber=ruleClassNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleClassNumber; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleClassNumber10666); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleClassNumber"


    // $ANTLR start "ruleClassNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4636:1: ruleClassNumber returns [EObject current=null] : ( ( (lv_number_0_0= RULE_LONG ) ) | ( (lv_value_1_0= ruleDefinedValue ) ) ) ;
    public final EObject ruleClassNumber() throws RecognitionException {
        EObject current = null;

        Token lv_number_0_0=null;
        EObject lv_value_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4639:28: ( ( ( (lv_number_0_0= RULE_LONG ) ) | ( (lv_value_1_0= ruleDefinedValue ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4640:1: ( ( (lv_number_0_0= RULE_LONG ) ) | ( (lv_value_1_0= ruleDefinedValue ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4640:1: ( ( (lv_number_0_0= RULE_LONG ) ) | ( (lv_value_1_0= ruleDefinedValue ) ) )
            int alt65=2;
            int LA65_0 = input.LA(1);

            if ( (LA65_0==RULE_LONG) ) {
                alt65=1;
            }
            else if ( (LA65_0==RULE_ID) ) {
                alt65=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 65, 0, input);

                throw nvae;
            }
            switch (alt65) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4640:2: ( (lv_number_0_0= RULE_LONG ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4640:2: ( (lv_number_0_0= RULE_LONG ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4641:1: (lv_number_0_0= RULE_LONG )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4641:1: (lv_number_0_0= RULE_LONG )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4642:3: lv_number_0_0= RULE_LONG
                    {
                    lv_number_0_0=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleClassNumber10708); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_number_0_0, grammarAccess.getClassNumberAccess().getNumberLONGTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getClassNumberRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"number",
                              		lv_number_0_0, 
                              		"LONG");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4659:6: ( (lv_value_1_0= ruleDefinedValue ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4659:6: ( (lv_value_1_0= ruleDefinedValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4660:1: (lv_value_1_0= ruleDefinedValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4660:1: (lv_value_1_0= ruleDefinedValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4661:3: lv_value_1_0= ruleDefinedValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getClassNumberAccess().getValueDefinedValueParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDefinedValue_in_ruleClassNumber10740);
                    lv_value_1_0=ruleDefinedValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getClassNumberRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_1_0, 
                              		"DefinedValue");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleClassNumber"


    // $ANTLR start "entryRuleObjectIdentifierType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4685:1: entryRuleObjectIdentifierType returns [EObject current=null] : iv_ruleObjectIdentifierType= ruleObjectIdentifierType EOF ;
    public final EObject entryRuleObjectIdentifierType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleObjectIdentifierType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4686:2: (iv_ruleObjectIdentifierType= ruleObjectIdentifierType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4687:2: iv_ruleObjectIdentifierType= ruleObjectIdentifierType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getObjectIdentifierTypeRule()); 
            }
            pushFollow(FOLLOW_ruleObjectIdentifierType_in_entryRuleObjectIdentifierType10776);
            iv_ruleObjectIdentifierType=ruleObjectIdentifierType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleObjectIdentifierType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleObjectIdentifierType10786); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleObjectIdentifierType"


    // $ANTLR start "ruleObjectIdentifierType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4694:1: ruleObjectIdentifierType returns [EObject current=null] : ( () otherlv_1= 'OBJECT' otherlv_2= 'IDENTIFIER' ) ;
    public final EObject ruleObjectIdentifierType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4697:28: ( ( () otherlv_1= 'OBJECT' otherlv_2= 'IDENTIFIER' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4698:1: ( () otherlv_1= 'OBJECT' otherlv_2= 'IDENTIFIER' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4698:1: ( () otherlv_1= 'OBJECT' otherlv_2= 'IDENTIFIER' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4698:2: () otherlv_1= 'OBJECT' otherlv_2= 'IDENTIFIER'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4698:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4699:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getObjectIdentifierTypeAccess().getObjectIdentifierTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,65,FOLLOW_65_in_ruleObjectIdentifierType10832); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getObjectIdentifierTypeAccess().getOBJECTKeyword_1());
                  
            }
            otherlv_2=(Token)match(input,66,FOLLOW_66_in_ruleObjectIdentifierType10844); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getObjectIdentifierTypeAccess().getIDENTIFIERKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleObjectIdentifierType"


    // $ANTLR start "entryRuleObjectIdentifierValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4720:1: entryRuleObjectIdentifierValue returns [EObject current=null] : iv_ruleObjectIdentifierValue= ruleObjectIdentifierValue EOF ;
    public final EObject entryRuleObjectIdentifierValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleObjectIdentifierValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4721:2: (iv_ruleObjectIdentifierValue= ruleObjectIdentifierValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4722:2: iv_ruleObjectIdentifierValue= ruleObjectIdentifierValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getObjectIdentifierValueRule()); 
            }
            pushFollow(FOLLOW_ruleObjectIdentifierValue_in_entryRuleObjectIdentifierValue10880);
            iv_ruleObjectIdentifierValue=ruleObjectIdentifierValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleObjectIdentifierValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleObjectIdentifierValue10890); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleObjectIdentifierValue"


    // $ANTLR start "ruleObjectIdentifierValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4729:1: ruleObjectIdentifierValue returns [EObject current=null] : (otherlv_0= '{' ( (lv_components_1_0= ruleObjIdComponents ) )+ otherlv_2= '}' ) ;
    public final EObject ruleObjectIdentifierValue() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_2=null;
        EObject lv_components_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4732:28: ( (otherlv_0= '{' ( (lv_components_1_0= ruleObjIdComponents ) )+ otherlv_2= '}' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4733:1: (otherlv_0= '{' ( (lv_components_1_0= ruleObjIdComponents ) )+ otherlv_2= '}' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4733:1: (otherlv_0= '{' ( (lv_components_1_0= ruleObjIdComponents ) )+ otherlv_2= '}' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4733:3: otherlv_0= '{' ( (lv_components_1_0= ruleObjIdComponents ) )+ otherlv_2= '}'
            {
            otherlv_0=(Token)match(input,32,FOLLOW_32_in_ruleObjectIdentifierValue10927); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getObjectIdentifierValueAccess().getLeftCurlyBracketKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4737:1: ( (lv_components_1_0= ruleObjIdComponents ) )+
            int cnt66=0;
            loop66:
            do {
                int alt66=2;
                int LA66_0 = input.LA(1);

                if ( ((LA66_0>=RULE_ID && LA66_0<=RULE_LONG)) ) {
                    alt66=1;
                }


                switch (alt66) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4738:1: (lv_components_1_0= ruleObjIdComponents )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4738:1: (lv_components_1_0= ruleObjIdComponents )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4739:3: lv_components_1_0= ruleObjIdComponents
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getObjectIdentifierValueAccess().getComponentsObjIdComponentsParserRuleCall_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleObjIdComponents_in_ruleObjectIdentifierValue10948);
            	    lv_components_1_0=ruleObjIdComponents();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getObjectIdentifierValueRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"components",
            	              		lv_components_1_0, 
            	              		"ObjIdComponents");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt66 >= 1 ) break loop66;
            	    if (state.backtracking>0) {state.failed=true; return current;}
                        EarlyExitException eee =
                            new EarlyExitException(66, input);
                        throw eee;
                }
                cnt66++;
            } while (true);

            otherlv_2=(Token)match(input,33,FOLLOW_33_in_ruleObjectIdentifierValue10961); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_2, grammarAccess.getObjectIdentifierValueAccess().getRightCurlyBracketKeyword_2());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleObjectIdentifierValue"


    // $ANTLR start "entryRuleObjIdComponents"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4767:1: entryRuleObjIdComponents returns [EObject current=null] : iv_ruleObjIdComponents= ruleObjIdComponents EOF ;
    public final EObject entryRuleObjIdComponents() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleObjIdComponents = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4768:2: (iv_ruleObjIdComponents= ruleObjIdComponents EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4769:2: iv_ruleObjIdComponents= ruleObjIdComponents EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getObjIdComponentsRule()); 
            }
            pushFollow(FOLLOW_ruleObjIdComponents_in_entryRuleObjIdComponents10997);
            iv_ruleObjIdComponents=ruleObjIdComponents();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleObjIdComponents; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleObjIdComponents11007); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleObjIdComponents"


    // $ANTLR start "ruleObjIdComponents"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4776:1: ruleObjIdComponents returns [EObject current=null] : ( ( (lv_number_0_0= RULE_LONG ) ) | this_NamedNumber_1= ruleNamedNumber | this_DefinedValue_2= ruleDefinedValue ) ;
    public final EObject ruleObjIdComponents() throws RecognitionException {
        EObject current = null;

        Token lv_number_0_0=null;
        EObject this_NamedNumber_1 = null;

        EObject this_DefinedValue_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4779:28: ( ( ( (lv_number_0_0= RULE_LONG ) ) | this_NamedNumber_1= ruleNamedNumber | this_DefinedValue_2= ruleDefinedValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4780:1: ( ( (lv_number_0_0= RULE_LONG ) ) | this_NamedNumber_1= ruleNamedNumber | this_DefinedValue_2= ruleDefinedValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4780:1: ( ( (lv_number_0_0= RULE_LONG ) ) | this_NamedNumber_1= ruleNamedNumber | this_DefinedValue_2= ruleDefinedValue )
            int alt67=3;
            int LA67_0 = input.LA(1);

            if ( (LA67_0==RULE_LONG) ) {
                alt67=1;
            }
            else if ( (LA67_0==RULE_ID) ) {
                int LA67_2 = input.LA(2);

                if ( (LA67_2==EOF||(LA67_2>=RULE_ID && LA67_2<=RULE_LONG)||LA67_2==33) ) {
                    alt67=3;
                }
                else if ( (LA67_2==34) ) {
                    alt67=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 67, 2, input);

                    throw nvae;
                }
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 67, 0, input);

                throw nvae;
            }
            switch (alt67) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4780:2: ( (lv_number_0_0= RULE_LONG ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4780:2: ( (lv_number_0_0= RULE_LONG ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4781:1: (lv_number_0_0= RULE_LONG )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4781:1: (lv_number_0_0= RULE_LONG )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4782:3: lv_number_0_0= RULE_LONG
                    {
                    lv_number_0_0=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleObjIdComponents11049); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_number_0_0, grammarAccess.getObjIdComponentsAccess().getNumberLONGTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getObjIdComponentsRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"number",
                              		lv_number_0_0, 
                              		"LONG");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4800:5: this_NamedNumber_1= ruleNamedNumber
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getObjIdComponentsAccess().getNamedNumberParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNamedNumber_in_ruleObjIdComponents11082);
                    this_NamedNumber_1=ruleNamedNumber();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NamedNumber_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4810:5: this_DefinedValue_2= ruleDefinedValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getObjIdComponentsAccess().getDefinedValueParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleDefinedValue_in_ruleObjIdComponents11109);
                    this_DefinedValue_2=ruleDefinedValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_DefinedValue_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleObjIdComponents"


    // $ANTLR start "entryRuleTimeType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4826:1: entryRuleTimeType returns [EObject current=null] : iv_ruleTimeType= ruleTimeType EOF ;
    public final EObject entryRuleTimeType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTimeType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4827:2: (iv_ruleTimeType= ruleTimeType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4828:2: iv_ruleTimeType= ruleTimeType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTimeTypeRule()); 
            }
            pushFollow(FOLLOW_ruleTimeType_in_entryRuleTimeType11144);
            iv_ruleTimeType=ruleTimeType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTimeType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTimeType11154); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTimeType"


    // $ANTLR start "ruleTimeType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4835:1: ruleTimeType returns [EObject current=null] : ( () otherlv_1= 'TIME' ) ;
    public final EObject ruleTimeType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4838:28: ( ( () otherlv_1= 'TIME' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4839:1: ( () otherlv_1= 'TIME' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4839:1: ( () otherlv_1= 'TIME' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4839:2: () otherlv_1= 'TIME'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4839:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4840:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getTimeTypeAccess().getTimeTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,67,FOLLOW_67_in_ruleTimeType11200); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getTimeTypeAccess().getTIMEKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTimeType"


    // $ANTLR start "entryRuleDateType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4857:1: entryRuleDateType returns [EObject current=null] : iv_ruleDateType= ruleDateType EOF ;
    public final EObject entryRuleDateType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDateType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4858:2: (iv_ruleDateType= ruleDateType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4859:2: iv_ruleDateType= ruleDateType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDateTypeRule()); 
            }
            pushFollow(FOLLOW_ruleDateType_in_entryRuleDateType11236);
            iv_ruleDateType=ruleDateType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDateType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDateType11246); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDateType"


    // $ANTLR start "ruleDateType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4866:1: ruleDateType returns [EObject current=null] : ( () otherlv_1= 'DATE' ) ;
    public final EObject ruleDateType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4869:28: ( ( () otherlv_1= 'DATE' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4870:1: ( () otherlv_1= 'DATE' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4870:1: ( () otherlv_1= 'DATE' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4870:2: () otherlv_1= 'DATE'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4870:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4871:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getDateTypeAccess().getDateTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,68,FOLLOW_68_in_ruleDateType11292); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getDateTypeAccess().getDATEKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDateType"


    // $ANTLR start "entryRuleTimeOfDayType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4888:1: entryRuleTimeOfDayType returns [EObject current=null] : iv_ruleTimeOfDayType= ruleTimeOfDayType EOF ;
    public final EObject entryRuleTimeOfDayType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTimeOfDayType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4889:2: (iv_ruleTimeOfDayType= ruleTimeOfDayType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4890:2: iv_ruleTimeOfDayType= ruleTimeOfDayType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTimeOfDayTypeRule()); 
            }
            pushFollow(FOLLOW_ruleTimeOfDayType_in_entryRuleTimeOfDayType11328);
            iv_ruleTimeOfDayType=ruleTimeOfDayType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTimeOfDayType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTimeOfDayType11338); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTimeOfDayType"


    // $ANTLR start "ruleTimeOfDayType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4897:1: ruleTimeOfDayType returns [EObject current=null] : ( () otherlv_1= 'TIME-OF-DAY' ) ;
    public final EObject ruleTimeOfDayType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4900:28: ( ( () otherlv_1= 'TIME-OF-DAY' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4901:1: ( () otherlv_1= 'TIME-OF-DAY' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4901:1: ( () otherlv_1= 'TIME-OF-DAY' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4901:2: () otherlv_1= 'TIME-OF-DAY'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4901:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4902:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getTimeOfDayTypeAccess().getTimeOfDayTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,69,FOLLOW_69_in_ruleTimeOfDayType11384); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getTimeOfDayTypeAccess().getTIMEOFDAYKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTimeOfDayType"


    // $ANTLR start "entryRuleDateTimeType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4919:1: entryRuleDateTimeType returns [EObject current=null] : iv_ruleDateTimeType= ruleDateTimeType EOF ;
    public final EObject entryRuleDateTimeType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDateTimeType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4920:2: (iv_ruleDateTimeType= ruleDateTimeType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4921:2: iv_ruleDateTimeType= ruleDateTimeType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDateTimeTypeRule()); 
            }
            pushFollow(FOLLOW_ruleDateTimeType_in_entryRuleDateTimeType11420);
            iv_ruleDateTimeType=ruleDateTimeType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDateTimeType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDateTimeType11430); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDateTimeType"


    // $ANTLR start "ruleDateTimeType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4928:1: ruleDateTimeType returns [EObject current=null] : ( () otherlv_1= 'DATE-TIME' ) ;
    public final EObject ruleDateTimeType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4931:28: ( ( () otherlv_1= 'DATE-TIME' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4932:1: ( () otherlv_1= 'DATE-TIME' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4932:1: ( () otherlv_1= 'DATE-TIME' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4932:2: () otherlv_1= 'DATE-TIME'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4932:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4933:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getDateTimeTypeAccess().getDateTimeTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,70,FOLLOW_70_in_ruleDateTimeType11476); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getDateTimeTypeAccess().getDATETIMEKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDateTimeType"


    // $ANTLR start "entryRuleDurationType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4950:1: entryRuleDurationType returns [EObject current=null] : iv_ruleDurationType= ruleDurationType EOF ;
    public final EObject entryRuleDurationType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleDurationType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4951:2: (iv_ruleDurationType= ruleDurationType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4952:2: iv_ruleDurationType= ruleDurationType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDurationTypeRule()); 
            }
            pushFollow(FOLLOW_ruleDurationType_in_entryRuleDurationType11512);
            iv_ruleDurationType=ruleDurationType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDurationType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDurationType11522); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDurationType"


    // $ANTLR start "ruleDurationType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4959:1: ruleDurationType returns [EObject current=null] : ( () otherlv_1= 'DURATION' ) ;
    public final EObject ruleDurationType() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4962:28: ( ( () otherlv_1= 'DURATION' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4963:1: ( () otherlv_1= 'DURATION' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4963:1: ( () otherlv_1= 'DURATION' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4963:2: () otherlv_1= 'DURATION'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4963:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4964:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getDurationTypeAccess().getDurationTypeAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,71,FOLLOW_71_in_ruleDurationType11568); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getDurationTypeAccess().getDURATIONKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDurationType"


    // $ANTLR start "entryRuleCharacterStringType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4981:1: entryRuleCharacterStringType returns [EObject current=null] : iv_ruleCharacterStringType= ruleCharacterStringType EOF ;
    public final EObject entryRuleCharacterStringType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCharacterStringType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4982:2: (iv_ruleCharacterStringType= ruleCharacterStringType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4983:2: iv_ruleCharacterStringType= ruleCharacterStringType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCharacterStringTypeRule()); 
            }
            pushFollow(FOLLOW_ruleCharacterStringType_in_entryRuleCharacterStringType11604);
            iv_ruleCharacterStringType=ruleCharacterStringType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCharacterStringType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCharacterStringType11614); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCharacterStringType"


    // $ANTLR start "ruleCharacterStringType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4990:1: ruleCharacterStringType returns [EObject current=null] : this_RestrictedCharacterStringType_0= ruleRestrictedCharacterStringType ;
    public final EObject ruleCharacterStringType() throws RecognitionException {
        EObject current = null;

        EObject this_RestrictedCharacterStringType_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4993:28: (this_RestrictedCharacterStringType_0= ruleRestrictedCharacterStringType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:4995:5: this_RestrictedCharacterStringType_0= ruleRestrictedCharacterStringType
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getCharacterStringTypeAccess().getRestrictedCharacterStringTypeParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleRestrictedCharacterStringType_in_ruleCharacterStringType11660);
            this_RestrictedCharacterStringType_0=ruleRestrictedCharacterStringType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_RestrictedCharacterStringType_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCharacterStringType"


    // $ANTLR start "entryRuleCharacterStringValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5011:1: entryRuleCharacterStringValue returns [EObject current=null] : iv_ruleCharacterStringValue= ruleCharacterStringValue EOF ;
    public final EObject entryRuleCharacterStringValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleCharacterStringValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5012:2: (iv_ruleCharacterStringValue= ruleCharacterStringValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5013:2: iv_ruleCharacterStringValue= ruleCharacterStringValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getCharacterStringValueRule()); 
            }
            pushFollow(FOLLOW_ruleCharacterStringValue_in_entryRuleCharacterStringValue11694);
            iv_ruleCharacterStringValue=ruleCharacterStringValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleCharacterStringValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleCharacterStringValue11704); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleCharacterStringValue"


    // $ANTLR start "ruleCharacterStringValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5020:1: ruleCharacterStringValue returns [EObject current=null] : this_RestrictedCharacterStringValue_0= ruleRestrictedCharacterStringValue ;
    public final EObject ruleCharacterStringValue() throws RecognitionException {
        EObject current = null;

        EObject this_RestrictedCharacterStringValue_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5023:28: (this_RestrictedCharacterStringValue_0= ruleRestrictedCharacterStringValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5025:5: this_RestrictedCharacterStringValue_0= ruleRestrictedCharacterStringValue
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getCharacterStringValueAccess().getRestrictedCharacterStringValueParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleRestrictedCharacterStringValue_in_ruleCharacterStringValue11750);
            this_RestrictedCharacterStringValue_0=ruleRestrictedCharacterStringValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_RestrictedCharacterStringValue_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleCharacterStringValue"


    // $ANTLR start "entryRuleRestrictedCharacterStringType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5041:1: entryRuleRestrictedCharacterStringType returns [EObject current=null] : iv_ruleRestrictedCharacterStringType= ruleRestrictedCharacterStringType EOF ;
    public final EObject entryRuleRestrictedCharacterStringType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRestrictedCharacterStringType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5042:2: (iv_ruleRestrictedCharacterStringType= ruleRestrictedCharacterStringType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5043:2: iv_ruleRestrictedCharacterStringType= ruleRestrictedCharacterStringType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeRule()); 
            }
            pushFollow(FOLLOW_ruleRestrictedCharacterStringType_in_entryRuleRestrictedCharacterStringType11784);
            iv_ruleRestrictedCharacterStringType=ruleRestrictedCharacterStringType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRestrictedCharacterStringType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleRestrictedCharacterStringType11794); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRestrictedCharacterStringType"


    // $ANTLR start "ruleRestrictedCharacterStringType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5050:1: ruleRestrictedCharacterStringType returns [EObject current=null] : (this_BMPString_0= ruleBMPString | this_GeneralString_1= ruleGeneralString | this_GraphicString_2= ruleGraphicString | this_IA5String_3= ruleIA5String | this_ISO646String_4= ruleISO646String | this_NumericString_5= ruleNumericString | this_PrintableString_6= rulePrintableString | this_TeletexString_7= ruleTeletexString | this_T61String_8= ruleT61String | this_UniversalString_9= ruleUniversalString | this_UTF8String_10= ruleUTF8String | this_VideotexString_11= ruleVideotexString | this_VisibleString_12= ruleVisibleString ) ;
    public final EObject ruleRestrictedCharacterStringType() throws RecognitionException {
        EObject current = null;

        EObject this_BMPString_0 = null;

        EObject this_GeneralString_1 = null;

        EObject this_GraphicString_2 = null;

        EObject this_IA5String_3 = null;

        EObject this_ISO646String_4 = null;

        EObject this_NumericString_5 = null;

        EObject this_PrintableString_6 = null;

        EObject this_TeletexString_7 = null;

        EObject this_T61String_8 = null;

        EObject this_UniversalString_9 = null;

        EObject this_UTF8String_10 = null;

        EObject this_VideotexString_11 = null;

        EObject this_VisibleString_12 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5053:28: ( (this_BMPString_0= ruleBMPString | this_GeneralString_1= ruleGeneralString | this_GraphicString_2= ruleGraphicString | this_IA5String_3= ruleIA5String | this_ISO646String_4= ruleISO646String | this_NumericString_5= ruleNumericString | this_PrintableString_6= rulePrintableString | this_TeletexString_7= ruleTeletexString | this_T61String_8= ruleT61String | this_UniversalString_9= ruleUniversalString | this_UTF8String_10= ruleUTF8String | this_VideotexString_11= ruleVideotexString | this_VisibleString_12= ruleVisibleString ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5054:1: (this_BMPString_0= ruleBMPString | this_GeneralString_1= ruleGeneralString | this_GraphicString_2= ruleGraphicString | this_IA5String_3= ruleIA5String | this_ISO646String_4= ruleISO646String | this_NumericString_5= ruleNumericString | this_PrintableString_6= rulePrintableString | this_TeletexString_7= ruleTeletexString | this_T61String_8= ruleT61String | this_UniversalString_9= ruleUniversalString | this_UTF8String_10= ruleUTF8String | this_VideotexString_11= ruleVideotexString | this_VisibleString_12= ruleVisibleString )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5054:1: (this_BMPString_0= ruleBMPString | this_GeneralString_1= ruleGeneralString | this_GraphicString_2= ruleGraphicString | this_IA5String_3= ruleIA5String | this_ISO646String_4= ruleISO646String | this_NumericString_5= ruleNumericString | this_PrintableString_6= rulePrintableString | this_TeletexString_7= ruleTeletexString | this_T61String_8= ruleT61String | this_UniversalString_9= ruleUniversalString | this_UTF8String_10= ruleUTF8String | this_VideotexString_11= ruleVideotexString | this_VisibleString_12= ruleVisibleString )
            int alt68=13;
            switch ( input.LA(1) ) {
            case 72:
                {
                alt68=1;
                }
                break;
            case 73:
                {
                alt68=2;
                }
                break;
            case 74:
                {
                alt68=3;
                }
                break;
            case 75:
                {
                alt68=4;
                }
                break;
            case 76:
                {
                alt68=5;
                }
                break;
            case 77:
                {
                alt68=6;
                }
                break;
            case 78:
                {
                alt68=7;
                }
                break;
            case 79:
                {
                alt68=8;
                }
                break;
            case 80:
                {
                alt68=9;
                }
                break;
            case 81:
                {
                alt68=10;
                }
                break;
            case 82:
                {
                alt68=11;
                }
                break;
            case 83:
                {
                alt68=12;
                }
                break;
            case 84:
                {
                alt68=13;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 68, 0, input);

                throw nvae;
            }

            switch (alt68) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5055:5: this_BMPString_0= ruleBMPString
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getBMPStringParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleBMPString_in_ruleRestrictedCharacterStringType11841);
                    this_BMPString_0=ruleBMPString();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_BMPString_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5065:5: this_GeneralString_1= ruleGeneralString
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getGeneralStringParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleGeneralString_in_ruleRestrictedCharacterStringType11868);
                    this_GeneralString_1=ruleGeneralString();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_GeneralString_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5075:5: this_GraphicString_2= ruleGraphicString
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getGraphicStringParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleGraphicString_in_ruleRestrictedCharacterStringType11895);
                    this_GraphicString_2=ruleGraphicString();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_GraphicString_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5085:5: this_IA5String_3= ruleIA5String
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getIA5StringParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_ruleIA5String_in_ruleRestrictedCharacterStringType11922);
                    this_IA5String_3=ruleIA5String();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IA5String_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5095:5: this_ISO646String_4= ruleISO646String
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getISO646StringParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleISO646String_in_ruleRestrictedCharacterStringType11949);
                    this_ISO646String_4=ruleISO646String();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ISO646String_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5105:5: this_NumericString_5= ruleNumericString
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getNumericStringParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleNumericString_in_ruleRestrictedCharacterStringType11976);
                    this_NumericString_5=ruleNumericString();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_NumericString_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 7 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5115:5: this_PrintableString_6= rulePrintableString
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getPrintableStringParserRuleCall_6()); 
                          
                    }
                    pushFollow(FOLLOW_rulePrintableString_in_ruleRestrictedCharacterStringType12003);
                    this_PrintableString_6=rulePrintableString();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PrintableString_6; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 8 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5125:5: this_TeletexString_7= ruleTeletexString
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getTeletexStringParserRuleCall_7()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTeletexString_in_ruleRestrictedCharacterStringType12030);
                    this_TeletexString_7=ruleTeletexString();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_TeletexString_7; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 9 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5135:5: this_T61String_8= ruleT61String
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getT61StringParserRuleCall_8()); 
                          
                    }
                    pushFollow(FOLLOW_ruleT61String_in_ruleRestrictedCharacterStringType12057);
                    this_T61String_8=ruleT61String();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_T61String_8; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 10 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5145:5: this_UniversalString_9= ruleUniversalString
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getUniversalStringParserRuleCall_9()); 
                          
                    }
                    pushFollow(FOLLOW_ruleUniversalString_in_ruleRestrictedCharacterStringType12084);
                    this_UniversalString_9=ruleUniversalString();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_UniversalString_9; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 11 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5155:5: this_UTF8String_10= ruleUTF8String
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getUTF8StringParserRuleCall_10()); 
                          
                    }
                    pushFollow(FOLLOW_ruleUTF8String_in_ruleRestrictedCharacterStringType12111);
                    this_UTF8String_10=ruleUTF8String();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_UTF8String_10; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 12 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5165:5: this_VideotexString_11= ruleVideotexString
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getVideotexStringParserRuleCall_11()); 
                          
                    }
                    pushFollow(FOLLOW_ruleVideotexString_in_ruleRestrictedCharacterStringType12138);
                    this_VideotexString_11=ruleVideotexString();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_VideotexString_11; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 13 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5175:5: this_VisibleString_12= ruleVisibleString
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getRestrictedCharacterStringTypeAccess().getVisibleStringParserRuleCall_12()); 
                          
                    }
                    pushFollow(FOLLOW_ruleVisibleString_in_ruleRestrictedCharacterStringType12165);
                    this_VisibleString_12=ruleVisibleString();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_VisibleString_12; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRestrictedCharacterStringType"


    // $ANTLR start "entryRuleBMPString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5191:1: entryRuleBMPString returns [EObject current=null] : iv_ruleBMPString= ruleBMPString EOF ;
    public final EObject entryRuleBMPString() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleBMPString = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5192:2: (iv_ruleBMPString= ruleBMPString EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5193:2: iv_ruleBMPString= ruleBMPString EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getBMPStringRule()); 
            }
            pushFollow(FOLLOW_ruleBMPString_in_entryRuleBMPString12200);
            iv_ruleBMPString=ruleBMPString();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleBMPString; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleBMPString12210); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleBMPString"


    // $ANTLR start "ruleBMPString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5200:1: ruleBMPString returns [EObject current=null] : ( () otherlv_1= 'BMPString' ) ;
    public final EObject ruleBMPString() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5203:28: ( ( () otherlv_1= 'BMPString' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5204:1: ( () otherlv_1= 'BMPString' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5204:1: ( () otherlv_1= 'BMPString' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5204:2: () otherlv_1= 'BMPString'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5204:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5205:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getBMPStringAccess().getBMPStringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,72,FOLLOW_72_in_ruleBMPString12256); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getBMPStringAccess().getBMPStringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBMPString"


    // $ANTLR start "entryRuleGeneralString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5222:1: entryRuleGeneralString returns [EObject current=null] : iv_ruleGeneralString= ruleGeneralString EOF ;
    public final EObject entryRuleGeneralString() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGeneralString = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5223:2: (iv_ruleGeneralString= ruleGeneralString EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5224:2: iv_ruleGeneralString= ruleGeneralString EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getGeneralStringRule()); 
            }
            pushFollow(FOLLOW_ruleGeneralString_in_entryRuleGeneralString12292);
            iv_ruleGeneralString=ruleGeneralString();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleGeneralString; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleGeneralString12302); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGeneralString"


    // $ANTLR start "ruleGeneralString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5231:1: ruleGeneralString returns [EObject current=null] : ( () otherlv_1= 'GeneralString' ) ;
    public final EObject ruleGeneralString() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5234:28: ( ( () otherlv_1= 'GeneralString' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5235:1: ( () otherlv_1= 'GeneralString' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5235:1: ( () otherlv_1= 'GeneralString' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5235:2: () otherlv_1= 'GeneralString'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5235:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5236:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getGeneralStringAccess().getGeneralStringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,73,FOLLOW_73_in_ruleGeneralString12348); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getGeneralStringAccess().getGeneralStringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGeneralString"


    // $ANTLR start "entryRuleGraphicString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5253:1: entryRuleGraphicString returns [EObject current=null] : iv_ruleGraphicString= ruleGraphicString EOF ;
    public final EObject entryRuleGraphicString() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleGraphicString = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5254:2: (iv_ruleGraphicString= ruleGraphicString EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5255:2: iv_ruleGraphicString= ruleGraphicString EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getGraphicStringRule()); 
            }
            pushFollow(FOLLOW_ruleGraphicString_in_entryRuleGraphicString12384);
            iv_ruleGraphicString=ruleGraphicString();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleGraphicString; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleGraphicString12394); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGraphicString"


    // $ANTLR start "ruleGraphicString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5262:1: ruleGraphicString returns [EObject current=null] : ( () otherlv_1= 'GraphicString' ) ;
    public final EObject ruleGraphicString() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5265:28: ( ( () otherlv_1= 'GraphicString' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5266:1: ( () otherlv_1= 'GraphicString' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5266:1: ( () otherlv_1= 'GraphicString' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5266:2: () otherlv_1= 'GraphicString'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5266:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5267:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getGraphicStringAccess().getGraphicStringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,74,FOLLOW_74_in_ruleGraphicString12440); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getGraphicStringAccess().getGraphicStringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGraphicString"


    // $ANTLR start "entryRuleIA5String"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5284:1: entryRuleIA5String returns [EObject current=null] : iv_ruleIA5String= ruleIA5String EOF ;
    public final EObject entryRuleIA5String() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIA5String = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5285:2: (iv_ruleIA5String= ruleIA5String EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5286:2: iv_ruleIA5String= ruleIA5String EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIA5StringRule()); 
            }
            pushFollow(FOLLOW_ruleIA5String_in_entryRuleIA5String12476);
            iv_ruleIA5String=ruleIA5String();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIA5String; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIA5String12486); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIA5String"


    // $ANTLR start "ruleIA5String"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5293:1: ruleIA5String returns [EObject current=null] : ( () otherlv_1= 'IA5String' ) ;
    public final EObject ruleIA5String() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5296:28: ( ( () otherlv_1= 'IA5String' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5297:1: ( () otherlv_1= 'IA5String' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5297:1: ( () otherlv_1= 'IA5String' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5297:2: () otherlv_1= 'IA5String'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5297:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5298:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getIA5StringAccess().getIA5StringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,75,FOLLOW_75_in_ruleIA5String12532); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getIA5StringAccess().getIA5StringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIA5String"


    // $ANTLR start "entryRuleISO646String"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5315:1: entryRuleISO646String returns [EObject current=null] : iv_ruleISO646String= ruleISO646String EOF ;
    public final EObject entryRuleISO646String() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleISO646String = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5316:2: (iv_ruleISO646String= ruleISO646String EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5317:2: iv_ruleISO646String= ruleISO646String EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getISO646StringRule()); 
            }
            pushFollow(FOLLOW_ruleISO646String_in_entryRuleISO646String12568);
            iv_ruleISO646String=ruleISO646String();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleISO646String; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleISO646String12578); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleISO646String"


    // $ANTLR start "ruleISO646String"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5324:1: ruleISO646String returns [EObject current=null] : ( () otherlv_1= 'ISO646String' ) ;
    public final EObject ruleISO646String() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5327:28: ( ( () otherlv_1= 'ISO646String' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5328:1: ( () otherlv_1= 'ISO646String' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5328:1: ( () otherlv_1= 'ISO646String' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5328:2: () otherlv_1= 'ISO646String'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5328:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5329:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getISO646StringAccess().getISO646StringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,76,FOLLOW_76_in_ruleISO646String12624); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getISO646StringAccess().getISO646StringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleISO646String"


    // $ANTLR start "entryRuleNumericString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5346:1: entryRuleNumericString returns [EObject current=null] : iv_ruleNumericString= ruleNumericString EOF ;
    public final EObject entryRuleNumericString() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleNumericString = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5347:2: (iv_ruleNumericString= ruleNumericString EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5348:2: iv_ruleNumericString= ruleNumericString EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getNumericStringRule()); 
            }
            pushFollow(FOLLOW_ruleNumericString_in_entryRuleNumericString12660);
            iv_ruleNumericString=ruleNumericString();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleNumericString; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleNumericString12670); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleNumericString"


    // $ANTLR start "ruleNumericString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5355:1: ruleNumericString returns [EObject current=null] : ( () otherlv_1= 'NumericString' ) ;
    public final EObject ruleNumericString() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5358:28: ( ( () otherlv_1= 'NumericString' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5359:1: ( () otherlv_1= 'NumericString' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5359:1: ( () otherlv_1= 'NumericString' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5359:2: () otherlv_1= 'NumericString'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5359:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5360:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getNumericStringAccess().getNumericStringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,77,FOLLOW_77_in_ruleNumericString12716); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getNumericStringAccess().getNumericStringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleNumericString"


    // $ANTLR start "entryRulePrintableString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5377:1: entryRulePrintableString returns [EObject current=null] : iv_rulePrintableString= rulePrintableString EOF ;
    public final EObject entryRulePrintableString() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePrintableString = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5378:2: (iv_rulePrintableString= rulePrintableString EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5379:2: iv_rulePrintableString= rulePrintableString EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPrintableStringRule()); 
            }
            pushFollow(FOLLOW_rulePrintableString_in_entryRulePrintableString12752);
            iv_rulePrintableString=rulePrintableString();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePrintableString; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePrintableString12762); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePrintableString"


    // $ANTLR start "rulePrintableString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5386:1: rulePrintableString returns [EObject current=null] : ( () otherlv_1= 'PrintableString' ) ;
    public final EObject rulePrintableString() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5389:28: ( ( () otherlv_1= 'PrintableString' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5390:1: ( () otherlv_1= 'PrintableString' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5390:1: ( () otherlv_1= 'PrintableString' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5390:2: () otherlv_1= 'PrintableString'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5390:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5391:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getPrintableStringAccess().getPrintableStringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,78,FOLLOW_78_in_rulePrintableString12808); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getPrintableStringAccess().getPrintableStringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePrintableString"


    // $ANTLR start "entryRuleTeletexString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5408:1: entryRuleTeletexString returns [EObject current=null] : iv_ruleTeletexString= ruleTeletexString EOF ;
    public final EObject entryRuleTeletexString() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTeletexString = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5409:2: (iv_ruleTeletexString= ruleTeletexString EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5410:2: iv_ruleTeletexString= ruleTeletexString EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTeletexStringRule()); 
            }
            pushFollow(FOLLOW_ruleTeletexString_in_entryRuleTeletexString12844);
            iv_ruleTeletexString=ruleTeletexString();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTeletexString; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTeletexString12854); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTeletexString"


    // $ANTLR start "ruleTeletexString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5417:1: ruleTeletexString returns [EObject current=null] : ( () otherlv_1= 'TeletexString' ) ;
    public final EObject ruleTeletexString() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5420:28: ( ( () otherlv_1= 'TeletexString' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5421:1: ( () otherlv_1= 'TeletexString' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5421:1: ( () otherlv_1= 'TeletexString' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5421:2: () otherlv_1= 'TeletexString'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5421:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5422:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getTeletexStringAccess().getTeletexStringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,79,FOLLOW_79_in_ruleTeletexString12900); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getTeletexStringAccess().getTeletexStringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTeletexString"


    // $ANTLR start "entryRuleT61String"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5439:1: entryRuleT61String returns [EObject current=null] : iv_ruleT61String= ruleT61String EOF ;
    public final EObject entryRuleT61String() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleT61String = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5440:2: (iv_ruleT61String= ruleT61String EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5441:2: iv_ruleT61String= ruleT61String EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getT61StringRule()); 
            }
            pushFollow(FOLLOW_ruleT61String_in_entryRuleT61String12936);
            iv_ruleT61String=ruleT61String();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleT61String; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleT61String12946); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleT61String"


    // $ANTLR start "ruleT61String"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5448:1: ruleT61String returns [EObject current=null] : ( () otherlv_1= 'T61String' ) ;
    public final EObject ruleT61String() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5451:28: ( ( () otherlv_1= 'T61String' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5452:1: ( () otherlv_1= 'T61String' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5452:1: ( () otherlv_1= 'T61String' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5452:2: () otherlv_1= 'T61String'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5452:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5453:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getT61StringAccess().getT61StringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,80,FOLLOW_80_in_ruleT61String12992); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getT61StringAccess().getT61StringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleT61String"


    // $ANTLR start "entryRuleUniversalString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5470:1: entryRuleUniversalString returns [EObject current=null] : iv_ruleUniversalString= ruleUniversalString EOF ;
    public final EObject entryRuleUniversalString() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUniversalString = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5471:2: (iv_ruleUniversalString= ruleUniversalString EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5472:2: iv_ruleUniversalString= ruleUniversalString EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUniversalStringRule()); 
            }
            pushFollow(FOLLOW_ruleUniversalString_in_entryRuleUniversalString13028);
            iv_ruleUniversalString=ruleUniversalString();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUniversalString; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUniversalString13038); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUniversalString"


    // $ANTLR start "ruleUniversalString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5479:1: ruleUniversalString returns [EObject current=null] : ( () otherlv_1= 'UniversalString' ) ;
    public final EObject ruleUniversalString() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5482:28: ( ( () otherlv_1= 'UniversalString' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5483:1: ( () otherlv_1= 'UniversalString' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5483:1: ( () otherlv_1= 'UniversalString' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5483:2: () otherlv_1= 'UniversalString'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5483:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5484:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getUniversalStringAccess().getUniversalStringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,81,FOLLOW_81_in_ruleUniversalString13084); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getUniversalStringAccess().getUniversalStringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUniversalString"


    // $ANTLR start "entryRuleUTF8String"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5501:1: entryRuleUTF8String returns [EObject current=null] : iv_ruleUTF8String= ruleUTF8String EOF ;
    public final EObject entryRuleUTF8String() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUTF8String = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5502:2: (iv_ruleUTF8String= ruleUTF8String EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5503:2: iv_ruleUTF8String= ruleUTF8String EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUTF8StringRule()); 
            }
            pushFollow(FOLLOW_ruleUTF8String_in_entryRuleUTF8String13120);
            iv_ruleUTF8String=ruleUTF8String();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUTF8String; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUTF8String13130); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUTF8String"


    // $ANTLR start "ruleUTF8String"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5510:1: ruleUTF8String returns [EObject current=null] : ( () otherlv_1= 'UTF8String' ) ;
    public final EObject ruleUTF8String() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5513:28: ( ( () otherlv_1= 'UTF8String' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5514:1: ( () otherlv_1= 'UTF8String' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5514:1: ( () otherlv_1= 'UTF8String' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5514:2: () otherlv_1= 'UTF8String'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5514:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5515:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getUTF8StringAccess().getUTF8StringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,82,FOLLOW_82_in_ruleUTF8String13176); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getUTF8StringAccess().getUTF8StringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUTF8String"


    // $ANTLR start "entryRuleVideotexString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5532:1: entryRuleVideotexString returns [EObject current=null] : iv_ruleVideotexString= ruleVideotexString EOF ;
    public final EObject entryRuleVideotexString() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVideotexString = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5533:2: (iv_ruleVideotexString= ruleVideotexString EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5534:2: iv_ruleVideotexString= ruleVideotexString EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVideotexStringRule()); 
            }
            pushFollow(FOLLOW_ruleVideotexString_in_entryRuleVideotexString13212);
            iv_ruleVideotexString=ruleVideotexString();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVideotexString; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleVideotexString13222); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVideotexString"


    // $ANTLR start "ruleVideotexString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5541:1: ruleVideotexString returns [EObject current=null] : ( () otherlv_1= 'VideotexString' ) ;
    public final EObject ruleVideotexString() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5544:28: ( ( () otherlv_1= 'VideotexString' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5545:1: ( () otherlv_1= 'VideotexString' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5545:1: ( () otherlv_1= 'VideotexString' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5545:2: () otherlv_1= 'VideotexString'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5545:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5546:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getVideotexStringAccess().getVideotexStringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,83,FOLLOW_83_in_ruleVideotexString13268); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getVideotexStringAccess().getVideotexStringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVideotexString"


    // $ANTLR start "entryRuleVisibleString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5563:1: entryRuleVisibleString returns [EObject current=null] : iv_ruleVisibleString= ruleVisibleString EOF ;
    public final EObject entryRuleVisibleString() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleVisibleString = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5564:2: (iv_ruleVisibleString= ruleVisibleString EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5565:2: iv_ruleVisibleString= ruleVisibleString EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getVisibleStringRule()); 
            }
            pushFollow(FOLLOW_ruleVisibleString_in_entryRuleVisibleString13304);
            iv_ruleVisibleString=ruleVisibleString();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleVisibleString; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleVisibleString13314); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleVisibleString"


    // $ANTLR start "ruleVisibleString"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5572:1: ruleVisibleString returns [EObject current=null] : ( () otherlv_1= 'VisibleString' ) ;
    public final EObject ruleVisibleString() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5575:28: ( ( () otherlv_1= 'VisibleString' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5576:1: ( () otherlv_1= 'VisibleString' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5576:1: ( () otherlv_1= 'VisibleString' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5576:2: () otherlv_1= 'VisibleString'
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5576:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5577:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getVisibleStringAccess().getVisibleStringAction_0(),
                          current);
                  
            }

            }

            otherlv_1=(Token)match(input,84,FOLLOW_84_in_ruleVisibleString13360); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getVisibleStringAccess().getVisibleStringKeyword_1());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleVisibleString"


    // $ANTLR start "entryRuleRestrictedCharacterStringValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5594:1: entryRuleRestrictedCharacterStringValue returns [EObject current=null] : iv_ruleRestrictedCharacterStringValue= ruleRestrictedCharacterStringValue EOF ;
    public final EObject entryRuleRestrictedCharacterStringValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRestrictedCharacterStringValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5595:2: (iv_ruleRestrictedCharacterStringValue= ruleRestrictedCharacterStringValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5596:2: iv_ruleRestrictedCharacterStringValue= ruleRestrictedCharacterStringValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getRestrictedCharacterStringValueRule()); 
            }
            pushFollow(FOLLOW_ruleRestrictedCharacterStringValue_in_entryRuleRestrictedCharacterStringValue13396);
            iv_ruleRestrictedCharacterStringValue=ruleRestrictedCharacterStringValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleRestrictedCharacterStringValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleRestrictedCharacterStringValue13406); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRestrictedCharacterStringValue"


    // $ANTLR start "ruleRestrictedCharacterStringValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5603:1: ruleRestrictedCharacterStringValue returns [EObject current=null] : ( () this_STRING_1= RULE_STRING ) ;
    public final EObject ruleRestrictedCharacterStringValue() throws RecognitionException {
        EObject current = null;

        Token this_STRING_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5606:28: ( ( () this_STRING_1= RULE_STRING ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5607:1: ( () this_STRING_1= RULE_STRING )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5607:1: ( () this_STRING_1= RULE_STRING )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5607:2: () this_STRING_1= RULE_STRING
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5607:2: ()
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5608:5: 
            {
            if ( state.backtracking==0 ) {

                      current = forceCreateModelElement(
                          grammarAccess.getRestrictedCharacterStringValueAccess().getCStringAction_0(),
                          current);
                  
            }

            }

            this_STRING_1=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleRestrictedCharacterStringValue13451); if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_STRING_1, grammarAccess.getRestrictedCharacterStringValueAccess().getSTRINGTerminalRuleCall_1()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRestrictedCharacterStringValue"


    // $ANTLR start "entryRuleUsefulType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5627:1: entryRuleUsefulType returns [EObject current=null] : iv_ruleUsefulType= ruleUsefulType EOF ;
    public final EObject entryRuleUsefulType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUsefulType = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5628:2: (iv_ruleUsefulType= ruleUsefulType EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5629:2: iv_ruleUsefulType= ruleUsefulType EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUsefulTypeRule()); 
            }
            pushFollow(FOLLOW_ruleUsefulType_in_entryRuleUsefulType13488);
            iv_ruleUsefulType=ruleUsefulType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUsefulType; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUsefulType13498); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUsefulType"


    // $ANTLR start "ruleUsefulType"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5636:1: ruleUsefulType returns [EObject current=null] : ( ( (lv_type_0_0= ruleGeneralizedTime ) ) | ( (lv_type_1_0= ruleUniversalTime ) ) | ( (lv_type_2_0= ruleObjectDescriptor ) ) ) ;
    public final EObject ruleUsefulType() throws RecognitionException {
        EObject current = null;

        AntlrDatatypeRuleToken lv_type_0_0 = null;

        AntlrDatatypeRuleToken lv_type_1_0 = null;

        AntlrDatatypeRuleToken lv_type_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5639:28: ( ( ( (lv_type_0_0= ruleGeneralizedTime ) ) | ( (lv_type_1_0= ruleUniversalTime ) ) | ( (lv_type_2_0= ruleObjectDescriptor ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5640:1: ( ( (lv_type_0_0= ruleGeneralizedTime ) ) | ( (lv_type_1_0= ruleUniversalTime ) ) | ( (lv_type_2_0= ruleObjectDescriptor ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5640:1: ( ( (lv_type_0_0= ruleGeneralizedTime ) ) | ( (lv_type_1_0= ruleUniversalTime ) ) | ( (lv_type_2_0= ruleObjectDescriptor ) ) )
            int alt69=3;
            switch ( input.LA(1) ) {
            case 85:
                {
                alt69=1;
                }
                break;
            case 86:
                {
                alt69=2;
                }
                break;
            case 87:
                {
                alt69=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 69, 0, input);

                throw nvae;
            }

            switch (alt69) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5640:2: ( (lv_type_0_0= ruleGeneralizedTime ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5640:2: ( (lv_type_0_0= ruleGeneralizedTime ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5641:1: (lv_type_0_0= ruleGeneralizedTime )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5641:1: (lv_type_0_0= ruleGeneralizedTime )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5642:3: lv_type_0_0= ruleGeneralizedTime
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getUsefulTypeAccess().getTypeGeneralizedTimeParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleGeneralizedTime_in_ruleUsefulType13544);
                    lv_type_0_0=ruleGeneralizedTime();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getUsefulTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"type",
                              		lv_type_0_0, 
                              		"GeneralizedTime");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5659:6: ( (lv_type_1_0= ruleUniversalTime ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5659:6: ( (lv_type_1_0= ruleUniversalTime ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5660:1: (lv_type_1_0= ruleUniversalTime )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5660:1: (lv_type_1_0= ruleUniversalTime )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5661:3: lv_type_1_0= ruleUniversalTime
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getUsefulTypeAccess().getTypeUniversalTimeParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleUniversalTime_in_ruleUsefulType13571);
                    lv_type_1_0=ruleUniversalTime();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getUsefulTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"type",
                              		lv_type_1_0, 
                              		"UniversalTime");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5678:6: ( (lv_type_2_0= ruleObjectDescriptor ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5678:6: ( (lv_type_2_0= ruleObjectDescriptor ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5679:1: (lv_type_2_0= ruleObjectDescriptor )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5679:1: (lv_type_2_0= ruleObjectDescriptor )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5680:3: lv_type_2_0= ruleObjectDescriptor
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getUsefulTypeAccess().getTypeObjectDescriptorParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleObjectDescriptor_in_ruleUsefulType13598);
                    lv_type_2_0=ruleObjectDescriptor();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getUsefulTypeRule());
                      	        }
                             		set(
                             			current, 
                             			"type",
                              		lv_type_2_0, 
                              		"ObjectDescriptor");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUsefulType"


    // $ANTLR start "entryRuleGeneralizedTime"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5704:1: entryRuleGeneralizedTime returns [String current=null] : iv_ruleGeneralizedTime= ruleGeneralizedTime EOF ;
    public final String entryRuleGeneralizedTime() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleGeneralizedTime = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5705:2: (iv_ruleGeneralizedTime= ruleGeneralizedTime EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5706:2: iv_ruleGeneralizedTime= ruleGeneralizedTime EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getGeneralizedTimeRule()); 
            }
            pushFollow(FOLLOW_ruleGeneralizedTime_in_entryRuleGeneralizedTime13635);
            iv_ruleGeneralizedTime=ruleGeneralizedTime();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleGeneralizedTime.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleGeneralizedTime13646); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleGeneralizedTime"


    // $ANTLR start "ruleGeneralizedTime"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5713:1: ruleGeneralizedTime returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'GeneralizedTime' ;
    public final AntlrDatatypeRuleToken ruleGeneralizedTime() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5716:28: (kw= 'GeneralizedTime' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5718:2: kw= 'GeneralizedTime'
            {
            kw=(Token)match(input,85,FOLLOW_85_in_ruleGeneralizedTime13683); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getGeneralizedTimeAccess().getGeneralizedTimeKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleGeneralizedTime"


    // $ANTLR start "entryRuleUniversalTime"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5731:1: entryRuleUniversalTime returns [String current=null] : iv_ruleUniversalTime= ruleUniversalTime EOF ;
    public final String entryRuleUniversalTime() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleUniversalTime = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5732:2: (iv_ruleUniversalTime= ruleUniversalTime EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5733:2: iv_ruleUniversalTime= ruleUniversalTime EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUniversalTimeRule()); 
            }
            pushFollow(FOLLOW_ruleUniversalTime_in_entryRuleUniversalTime13723);
            iv_ruleUniversalTime=ruleUniversalTime();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUniversalTime.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUniversalTime13734); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUniversalTime"


    // $ANTLR start "ruleUniversalTime"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5740:1: ruleUniversalTime returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'UTCTime' ;
    public final AntlrDatatypeRuleToken ruleUniversalTime() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5743:28: (kw= 'UTCTime' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5745:2: kw= 'UTCTime'
            {
            kw=(Token)match(input,86,FOLLOW_86_in_ruleUniversalTime13771); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getUniversalTimeAccess().getUTCTimeKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUniversalTime"


    // $ANTLR start "entryRuleObjectDescriptor"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5758:1: entryRuleObjectDescriptor returns [String current=null] : iv_ruleObjectDescriptor= ruleObjectDescriptor EOF ;
    public final String entryRuleObjectDescriptor() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleObjectDescriptor = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5759:2: (iv_ruleObjectDescriptor= ruleObjectDescriptor EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5760:2: iv_ruleObjectDescriptor= ruleObjectDescriptor EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getObjectDescriptorRule()); 
            }
            pushFollow(FOLLOW_ruleObjectDescriptor_in_entryRuleObjectDescriptor13811);
            iv_ruleObjectDescriptor=ruleObjectDescriptor();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleObjectDescriptor.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleObjectDescriptor13822); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleObjectDescriptor"


    // $ANTLR start "ruleObjectDescriptor"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5767:1: ruleObjectDescriptor returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : kw= 'ObjectDescriptor' ;
    public final AntlrDatatypeRuleToken ruleObjectDescriptor() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5770:28: (kw= 'ObjectDescriptor' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5772:2: kw= 'ObjectDescriptor'
            {
            kw=(Token)match(input,87,FOLLOW_87_in_ruleObjectDescriptor13859); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getObjectDescriptorAccess().getObjectDescriptorKeyword()); 
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleObjectDescriptor"


    // $ANTLR start "entryRuleConstraint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5785:1: entryRuleConstraint returns [EObject current=null] : iv_ruleConstraint= ruleConstraint EOF ;
    public final EObject entryRuleConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstraint = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5786:2: (iv_ruleConstraint= ruleConstraint EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5787:2: iv_ruleConstraint= ruleConstraint EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConstraintRule()); 
            }
            pushFollow(FOLLOW_ruleConstraint_in_entryRuleConstraint13898);
            iv_ruleConstraint=ruleConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConstraint; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleConstraint13908); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstraint"


    // $ANTLR start "ruleConstraint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5794:1: ruleConstraint returns [EObject current=null] : (otherlv_0= '(' ( (lv_constraintSpec_1_0= ruleConstraintSpec ) ) ( (lv_exceptionSpec_2_0= ruleExceptionSpec ) )? otherlv_3= ')' ) ;
    public final EObject ruleConstraint() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_3=null;
        EObject lv_constraintSpec_1_0 = null;

        EObject lv_exceptionSpec_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5797:28: ( (otherlv_0= '(' ( (lv_constraintSpec_1_0= ruleConstraintSpec ) ) ( (lv_exceptionSpec_2_0= ruleExceptionSpec ) )? otherlv_3= ')' ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5798:1: (otherlv_0= '(' ( (lv_constraintSpec_1_0= ruleConstraintSpec ) ) ( (lv_exceptionSpec_2_0= ruleExceptionSpec ) )? otherlv_3= ')' )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5798:1: (otherlv_0= '(' ( (lv_constraintSpec_1_0= ruleConstraintSpec ) ) ( (lv_exceptionSpec_2_0= ruleExceptionSpec ) )? otherlv_3= ')' )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5798:3: otherlv_0= '(' ( (lv_constraintSpec_1_0= ruleConstraintSpec ) ) ( (lv_exceptionSpec_2_0= ruleExceptionSpec ) )? otherlv_3= ')'
            {
            otherlv_0=(Token)match(input,34,FOLLOW_34_in_ruleConstraint13945); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getConstraintAccess().getLeftParenthesisKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5802:1: ( (lv_constraintSpec_1_0= ruleConstraintSpec ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5803:1: (lv_constraintSpec_1_0= ruleConstraintSpec )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5803:1: (lv_constraintSpec_1_0= ruleConstraintSpec )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5804:3: lv_constraintSpec_1_0= ruleConstraintSpec
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getConstraintAccess().getConstraintSpecConstraintSpecParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleConstraintSpec_in_ruleConstraint13966);
            lv_constraintSpec_1_0=ruleConstraintSpec();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getConstraintRule());
              	        }
                     		set(
                     			current, 
                     			"constraintSpec",
                      		lv_constraintSpec_1_0, 
                      		"ConstraintSpec");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5820:2: ( (lv_exceptionSpec_2_0= ruleExceptionSpec ) )?
            int alt70=2;
            int LA70_0 = input.LA(1);

            if ( ((LA70_0>=RULE_ID && LA70_0<=RULE_LONG)||(LA70_0>=30 && LA70_0<=31)||LA70_0==36||LA70_0==38||LA70_0==42||LA70_0==44||(LA70_0>=46 && LA70_0<=47)||(LA70_0>=58 && LA70_0<=60)||LA70_0==65||(LA70_0>=67 && LA70_0<=87)) ) {
                alt70=1;
            }
            switch (alt70) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5821:1: (lv_exceptionSpec_2_0= ruleExceptionSpec )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5821:1: (lv_exceptionSpec_2_0= ruleExceptionSpec )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5822:3: lv_exceptionSpec_2_0= ruleExceptionSpec
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getConstraintAccess().getExceptionSpecExceptionSpecParserRuleCall_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleExceptionSpec_in_ruleConstraint13987);
                    lv_exceptionSpec_2_0=ruleExceptionSpec();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getConstraintRule());
                      	        }
                             		set(
                             			current, 
                             			"exceptionSpec",
                              		lv_exceptionSpec_2_0, 
                              		"ExceptionSpec");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }

            otherlv_3=(Token)match(input,35,FOLLOW_35_in_ruleConstraint14000); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_3, grammarAccess.getConstraintAccess().getRightParenthesisKeyword_3());
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstraint"


    // $ANTLR start "entryRuleConstraintSpec"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5850:1: entryRuleConstraintSpec returns [EObject current=null] : iv_ruleConstraintSpec= ruleConstraintSpec EOF ;
    public final EObject entryRuleConstraintSpec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleConstraintSpec = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5851:2: (iv_ruleConstraintSpec= ruleConstraintSpec EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5852:2: iv_ruleConstraintSpec= ruleConstraintSpec EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getConstraintSpecRule()); 
            }
            pushFollow(FOLLOW_ruleConstraintSpec_in_entryRuleConstraintSpec14036);
            iv_ruleConstraintSpec=ruleConstraintSpec();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleConstraintSpec; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleConstraintSpec14046); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleConstraintSpec"


    // $ANTLR start "ruleConstraintSpec"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5859:1: ruleConstraintSpec returns [EObject current=null] : this_SubtypeConstraint_0= ruleSubtypeConstraint ;
    public final EObject ruleConstraintSpec() throws RecognitionException {
        EObject current = null;

        EObject this_SubtypeConstraint_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5862:28: (this_SubtypeConstraint_0= ruleSubtypeConstraint )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5864:5: this_SubtypeConstraint_0= ruleSubtypeConstraint
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getConstraintSpecAccess().getSubtypeConstraintParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleSubtypeConstraint_in_ruleConstraintSpec14092);
            this_SubtypeConstraint_0=ruleSubtypeConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_SubtypeConstraint_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleConstraintSpec"


    // $ANTLR start "entryRuleSubtypeConstraint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5880:1: entryRuleSubtypeConstraint returns [EObject current=null] : iv_ruleSubtypeConstraint= ruleSubtypeConstraint EOF ;
    public final EObject entryRuleSubtypeConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubtypeConstraint = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5881:2: (iv_ruleSubtypeConstraint= ruleSubtypeConstraint EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5882:2: iv_ruleSubtypeConstraint= ruleSubtypeConstraint EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSubtypeConstraintRule()); 
            }
            pushFollow(FOLLOW_ruleSubtypeConstraint_in_entryRuleSubtypeConstraint14126);
            iv_ruleSubtypeConstraint=ruleSubtypeConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSubtypeConstraint; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSubtypeConstraint14136); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSubtypeConstraint"


    // $ANTLR start "ruleSubtypeConstraint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5889:1: ruleSubtypeConstraint returns [EObject current=null] : this_ElementSetSpecs_0= ruleElementSetSpecs ;
    public final EObject ruleSubtypeConstraint() throws RecognitionException {
        EObject current = null;

        EObject this_ElementSetSpecs_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5892:28: (this_ElementSetSpecs_0= ruleElementSetSpecs )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5894:5: this_ElementSetSpecs_0= ruleElementSetSpecs
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getSubtypeConstraintAccess().getElementSetSpecsParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleElementSetSpecs_in_ruleSubtypeConstraint14182);
            this_ElementSetSpecs_0=ruleElementSetSpecs();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_ElementSetSpecs_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSubtypeConstraint"


    // $ANTLR start "entryRuleElementSetSpecs"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5910:1: entryRuleElementSetSpecs returns [EObject current=null] : iv_ruleElementSetSpecs= ruleElementSetSpecs EOF ;
    public final EObject entryRuleElementSetSpecs() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElementSetSpecs = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5911:2: (iv_ruleElementSetSpecs= ruleElementSetSpecs EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5912:2: iv_ruleElementSetSpecs= ruleElementSetSpecs EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getElementSetSpecsRule()); 
            }
            pushFollow(FOLLOW_ruleElementSetSpecs_in_entryRuleElementSetSpecs14216);
            iv_ruleElementSetSpecs=ruleElementSetSpecs();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleElementSetSpecs; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleElementSetSpecs14226); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElementSetSpecs"


    // $ANTLR start "ruleElementSetSpecs"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5919:1: ruleElementSetSpecs returns [EObject current=null] : ( ( (lv_elementSetSpec_0_0= ruleElementSetSpec ) ) (otherlv_1= ',' otherlv_2= '...' (otherlv_3= ',' ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) ) )? )? ) ;
    public final EObject ruleElementSetSpecs() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        EObject lv_elementSetSpec_0_0 = null;

        EObject lv_elementSetSpec_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5922:28: ( ( ( (lv_elementSetSpec_0_0= ruleElementSetSpec ) ) (otherlv_1= ',' otherlv_2= '...' (otherlv_3= ',' ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) ) )? )? ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5923:1: ( ( (lv_elementSetSpec_0_0= ruleElementSetSpec ) ) (otherlv_1= ',' otherlv_2= '...' (otherlv_3= ',' ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) ) )? )? )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5923:1: ( ( (lv_elementSetSpec_0_0= ruleElementSetSpec ) ) (otherlv_1= ',' otherlv_2= '...' (otherlv_3= ',' ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) ) )? )? )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5923:2: ( (lv_elementSetSpec_0_0= ruleElementSetSpec ) ) (otherlv_1= ',' otherlv_2= '...' (otherlv_3= ',' ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) ) )? )?
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5923:2: ( (lv_elementSetSpec_0_0= ruleElementSetSpec ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5924:1: (lv_elementSetSpec_0_0= ruleElementSetSpec )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5924:1: (lv_elementSetSpec_0_0= ruleElementSetSpec )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5925:3: lv_elementSetSpec_0_0= ruleElementSetSpec
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getElementSetSpecsAccess().getElementSetSpecElementSetSpecParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleElementSetSpec_in_ruleElementSetSpecs14272);
            lv_elementSetSpec_0_0=ruleElementSetSpec();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getElementSetSpecsRule());
              	        }
                     		add(
                     			current, 
                     			"elementSetSpec",
                      		lv_elementSetSpec_0_0, 
                      		"ElementSetSpec");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5941:2: (otherlv_1= ',' otherlv_2= '...' (otherlv_3= ',' ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) ) )? )?
            int alt72=2;
            int LA72_0 = input.LA(1);

            if ( (LA72_0==25) ) {
                alt72=1;
            }
            switch (alt72) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5941:4: otherlv_1= ',' otherlv_2= '...' (otherlv_3= ',' ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) ) )?
                    {
                    otherlv_1=(Token)match(input,25,FOLLOW_25_in_ruleElementSetSpecs14285); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getElementSetSpecsAccess().getCommaKeyword_1_0());
                          
                    }
                    otherlv_2=(Token)match(input,37,FOLLOW_37_in_ruleElementSetSpecs14297); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_2, grammarAccess.getElementSetSpecsAccess().getFullStopFullStopFullStopKeyword_1_1());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5949:1: (otherlv_3= ',' ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) ) )?
                    int alt71=2;
                    int LA71_0 = input.LA(1);

                    if ( (LA71_0==25) ) {
                        alt71=1;
                    }
                    switch (alt71) {
                        case 1 :
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5949:3: otherlv_3= ',' ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) )
                            {
                            otherlv_3=(Token)match(input,25,FOLLOW_25_in_ruleElementSetSpecs14310); if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                                  	newLeafNode(otherlv_3, grammarAccess.getElementSetSpecsAccess().getCommaKeyword_1_2_0());
                                  
                            }
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5953:1: ( (lv_elementSetSpec_4_0= ruleElementSetSpec ) )
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5954:1: (lv_elementSetSpec_4_0= ruleElementSetSpec )
                            {
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5954:1: (lv_elementSetSpec_4_0= ruleElementSetSpec )
                            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5955:3: lv_elementSetSpec_4_0= ruleElementSetSpec
                            {
                            if ( state.backtracking==0 ) {
                               
                              	        newCompositeNode(grammarAccess.getElementSetSpecsAccess().getElementSetSpecElementSetSpecParserRuleCall_1_2_1_0()); 
                              	    
                            }
                            pushFollow(FOLLOW_ruleElementSetSpec_in_ruleElementSetSpecs14331);
                            lv_elementSetSpec_4_0=ruleElementSetSpec();

                            state._fsp--;
                            if (state.failed) return current;
                            if ( state.backtracking==0 ) {

                              	        if (current==null) {
                              	            current = createModelElementForParent(grammarAccess.getElementSetSpecsRule());
                              	        }
                                     		add(
                                     			current, 
                                     			"elementSetSpec",
                                      		lv_elementSetSpec_4_0, 
                                      		"ElementSetSpec");
                              	        afterParserOrEnumRuleCall();
                              	    
                            }

                            }


                            }


                            }
                            break;

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElementSetSpecs"


    // $ANTLR start "entryRuleElementSetSpec"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5979:1: entryRuleElementSetSpec returns [EObject current=null] : iv_ruleElementSetSpec= ruleElementSetSpec EOF ;
    public final EObject entryRuleElementSetSpec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElementSetSpec = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5980:2: (iv_ruleElementSetSpec= ruleElementSetSpec EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5981:2: iv_ruleElementSetSpec= ruleElementSetSpec EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getElementSetSpecRule()); 
            }
            pushFollow(FOLLOW_ruleElementSetSpec_in_entryRuleElementSetSpec14371);
            iv_ruleElementSetSpec=ruleElementSetSpec();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleElementSetSpec; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleElementSetSpec14381); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElementSetSpec"


    // $ANTLR start "ruleElementSetSpec"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5988:1: ruleElementSetSpec returns [EObject current=null] : (this_Unions_0= ruleUnions | (otherlv_1= 'ALL' ( (lv_exclusions_2_0= ruleExclusions ) ) ) ) ;
    public final EObject ruleElementSetSpec() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject this_Unions_0 = null;

        EObject lv_exclusions_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5991:28: ( (this_Unions_0= ruleUnions | (otherlv_1= 'ALL' ( (lv_exclusions_2_0= ruleExclusions ) ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5992:1: (this_Unions_0= ruleUnions | (otherlv_1= 'ALL' ( (lv_exclusions_2_0= ruleExclusions ) ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5992:1: (this_Unions_0= ruleUnions | (otherlv_1= 'ALL' ( (lv_exclusions_2_0= ruleExclusions ) ) ) )
            int alt73=2;
            int LA73_0 = input.LA(1);

            if ( ((LA73_0>=RULE_ID && LA73_0<=RULE_STRING)||(LA73_0>=29 && LA73_0<=32)||LA73_0==36||LA73_0==38||LA73_0==42||(LA73_0>=44 && LA73_0<=47)||(LA73_0>=58 && LA73_0<=60)||LA73_0==65||(LA73_0>=67 && LA73_0<=87)||LA73_0==93||LA73_0==96||(LA73_0>=98 && LA73_0<=99)||(LA73_0>=101 && LA73_0<=105)) ) {
                alt73=1;
            }
            else if ( (LA73_0==26) ) {
                alt73=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 73, 0, input);

                throw nvae;
            }
            switch (alt73) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:5993:5: this_Unions_0= ruleUnions
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getElementSetSpecAccess().getUnionsParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleUnions_in_ruleElementSetSpec14428);
                    this_Unions_0=ruleUnions();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_Unions_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6002:6: (otherlv_1= 'ALL' ( (lv_exclusions_2_0= ruleExclusions ) ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6002:6: (otherlv_1= 'ALL' ( (lv_exclusions_2_0= ruleExclusions ) ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6002:8: otherlv_1= 'ALL' ( (lv_exclusions_2_0= ruleExclusions ) )
                    {
                    otherlv_1=(Token)match(input,26,FOLLOW_26_in_ruleElementSetSpec14446); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_1, grammarAccess.getElementSetSpecAccess().getALLKeyword_1_0());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6006:1: ( (lv_exclusions_2_0= ruleExclusions ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6007:1: (lv_exclusions_2_0= ruleExclusions )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6007:1: (lv_exclusions_2_0= ruleExclusions )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6008:3: lv_exclusions_2_0= ruleExclusions
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getElementSetSpecAccess().getExclusionsExclusionsParserRuleCall_1_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleExclusions_in_ruleElementSetSpec14467);
                    lv_exclusions_2_0=ruleExclusions();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getElementSetSpecRule());
                      	        }
                             		set(
                             			current, 
                             			"exclusions",
                              		lv_exclusions_2_0, 
                              		"Exclusions");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElementSetSpec"


    // $ANTLR start "entryRuleUnions"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6032:1: entryRuleUnions returns [EObject current=null] : iv_ruleUnions= ruleUnions EOF ;
    public final EObject entryRuleUnions() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUnions = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6033:2: (iv_ruleUnions= ruleUnions EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6034:2: iv_ruleUnions= ruleUnions EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUnionsRule()); 
            }
            pushFollow(FOLLOW_ruleUnions_in_entryRuleUnions14504);
            iv_ruleUnions=ruleUnions();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUnions; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUnions14514); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUnions"


    // $ANTLR start "ruleUnions"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6041:1: ruleUnions returns [EObject current=null] : ( ( (lv_intersections_0_0= ruleIntersections ) ) ( (otherlv_1= '|' | otherlv_2= 'UNION' ) ( (lv_intersections_3_0= ruleIntersections ) ) )* ) ;
    public final EObject ruleUnions() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        EObject lv_intersections_0_0 = null;

        EObject lv_intersections_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6044:28: ( ( ( (lv_intersections_0_0= ruleIntersections ) ) ( (otherlv_1= '|' | otherlv_2= 'UNION' ) ( (lv_intersections_3_0= ruleIntersections ) ) )* ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6045:1: ( ( (lv_intersections_0_0= ruleIntersections ) ) ( (otherlv_1= '|' | otherlv_2= 'UNION' ) ( (lv_intersections_3_0= ruleIntersections ) ) )* )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6045:1: ( ( (lv_intersections_0_0= ruleIntersections ) ) ( (otherlv_1= '|' | otherlv_2= 'UNION' ) ( (lv_intersections_3_0= ruleIntersections ) ) )* )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6045:2: ( (lv_intersections_0_0= ruleIntersections ) ) ( (otherlv_1= '|' | otherlv_2= 'UNION' ) ( (lv_intersections_3_0= ruleIntersections ) ) )*
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6045:2: ( (lv_intersections_0_0= ruleIntersections ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6046:1: (lv_intersections_0_0= ruleIntersections )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6046:1: (lv_intersections_0_0= ruleIntersections )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6047:3: lv_intersections_0_0= ruleIntersections
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getUnionsAccess().getIntersectionsIntersectionsParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleIntersections_in_ruleUnions14560);
            lv_intersections_0_0=ruleIntersections();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getUnionsRule());
              	        }
                     		add(
                     			current, 
                     			"intersections",
                      		lv_intersections_0_0, 
                      		"Intersections");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6063:2: ( (otherlv_1= '|' | otherlv_2= 'UNION' ) ( (lv_intersections_3_0= ruleIntersections ) ) )*
            loop75:
            do {
                int alt75=2;
                int LA75_0 = input.LA(1);

                if ( ((LA75_0>=88 && LA75_0<=89)) ) {
                    alt75=1;
                }


                switch (alt75) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6063:3: (otherlv_1= '|' | otherlv_2= 'UNION' ) ( (lv_intersections_3_0= ruleIntersections ) )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6063:3: (otherlv_1= '|' | otherlv_2= 'UNION' )
            	    int alt74=2;
            	    int LA74_0 = input.LA(1);

            	    if ( (LA74_0==88) ) {
            	        alt74=1;
            	    }
            	    else if ( (LA74_0==89) ) {
            	        alt74=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 74, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt74) {
            	        case 1 :
            	            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6063:5: otherlv_1= '|'
            	            {
            	            otherlv_1=(Token)match(input,88,FOLLOW_88_in_ruleUnions14574); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_1, grammarAccess.getUnionsAccess().getVerticalLineKeyword_1_0_0());
            	                  
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6068:7: otherlv_2= 'UNION'
            	            {
            	            otherlv_2=(Token)match(input,89,FOLLOW_89_in_ruleUnions14592); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_2, grammarAccess.getUnionsAccess().getUNIONKeyword_1_0_1());
            	                  
            	            }

            	            }
            	            break;

            	    }

            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6072:2: ( (lv_intersections_3_0= ruleIntersections ) )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6073:1: (lv_intersections_3_0= ruleIntersections )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6073:1: (lv_intersections_3_0= ruleIntersections )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6074:3: lv_intersections_3_0= ruleIntersections
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getUnionsAccess().getIntersectionsIntersectionsParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleIntersections_in_ruleUnions14614);
            	    lv_intersections_3_0=ruleIntersections();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getUnionsRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"intersections",
            	              		lv_intersections_3_0, 
            	              		"Intersections");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop75;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUnions"


    // $ANTLR start "entryRuleIntersections"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6098:1: entryRuleIntersections returns [EObject current=null] : iv_ruleIntersections= ruleIntersections EOF ;
    public final EObject entryRuleIntersections() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntersections = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6099:2: (iv_ruleIntersections= ruleIntersections EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6100:2: iv_ruleIntersections= ruleIntersections EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIntersectionsRule()); 
            }
            pushFollow(FOLLOW_ruleIntersections_in_entryRuleIntersections14652);
            iv_ruleIntersections=ruleIntersections();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIntersections; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntersections14662); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntersections"


    // $ANTLR start "ruleIntersections"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6107:1: ruleIntersections returns [EObject current=null] : ( ( (lv_intersectionElements_0_0= ruleIntersectionElements ) ) ( (otherlv_1= '^' | otherlv_2= 'INTERSECTION' ) ( (lv_intersectionElements_3_0= ruleIntersectionElements ) ) )* ) ;
    public final EObject ruleIntersections() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token otherlv_2=null;
        EObject lv_intersectionElements_0_0 = null;

        EObject lv_intersectionElements_3_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6110:28: ( ( ( (lv_intersectionElements_0_0= ruleIntersectionElements ) ) ( (otherlv_1= '^' | otherlv_2= 'INTERSECTION' ) ( (lv_intersectionElements_3_0= ruleIntersectionElements ) ) )* ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6111:1: ( ( (lv_intersectionElements_0_0= ruleIntersectionElements ) ) ( (otherlv_1= '^' | otherlv_2= 'INTERSECTION' ) ( (lv_intersectionElements_3_0= ruleIntersectionElements ) ) )* )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6111:1: ( ( (lv_intersectionElements_0_0= ruleIntersectionElements ) ) ( (otherlv_1= '^' | otherlv_2= 'INTERSECTION' ) ( (lv_intersectionElements_3_0= ruleIntersectionElements ) ) )* )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6111:2: ( (lv_intersectionElements_0_0= ruleIntersectionElements ) ) ( (otherlv_1= '^' | otherlv_2= 'INTERSECTION' ) ( (lv_intersectionElements_3_0= ruleIntersectionElements ) ) )*
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6111:2: ( (lv_intersectionElements_0_0= ruleIntersectionElements ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6112:1: (lv_intersectionElements_0_0= ruleIntersectionElements )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6112:1: (lv_intersectionElements_0_0= ruleIntersectionElements )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6113:3: lv_intersectionElements_0_0= ruleIntersectionElements
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIntersectionsAccess().getIntersectionElementsIntersectionElementsParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleIntersectionElements_in_ruleIntersections14708);
            lv_intersectionElements_0_0=ruleIntersectionElements();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIntersectionsRule());
              	        }
                     		add(
                     			current, 
                     			"intersectionElements",
                      		lv_intersectionElements_0_0, 
                      		"IntersectionElements");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6129:2: ( (otherlv_1= '^' | otherlv_2= 'INTERSECTION' ) ( (lv_intersectionElements_3_0= ruleIntersectionElements ) ) )*
            loop77:
            do {
                int alt77=2;
                int LA77_0 = input.LA(1);

                if ( ((LA77_0>=90 && LA77_0<=91)) ) {
                    alt77=1;
                }


                switch (alt77) {
            	case 1 :
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6129:3: (otherlv_1= '^' | otherlv_2= 'INTERSECTION' ) ( (lv_intersectionElements_3_0= ruleIntersectionElements ) )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6129:3: (otherlv_1= '^' | otherlv_2= 'INTERSECTION' )
            	    int alt76=2;
            	    int LA76_0 = input.LA(1);

            	    if ( (LA76_0==90) ) {
            	        alt76=1;
            	    }
            	    else if ( (LA76_0==91) ) {
            	        alt76=2;
            	    }
            	    else {
            	        if (state.backtracking>0) {state.failed=true; return current;}
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 76, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt76) {
            	        case 1 :
            	            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6129:5: otherlv_1= '^'
            	            {
            	            otherlv_1=(Token)match(input,90,FOLLOW_90_in_ruleIntersections14722); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_1, grammarAccess.getIntersectionsAccess().getCircumflexAccentKeyword_1_0_0());
            	                  
            	            }

            	            }
            	            break;
            	        case 2 :
            	            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6134:7: otherlv_2= 'INTERSECTION'
            	            {
            	            otherlv_2=(Token)match(input,91,FOLLOW_91_in_ruleIntersections14740); if (state.failed) return current;
            	            if ( state.backtracking==0 ) {

            	                  	newLeafNode(otherlv_2, grammarAccess.getIntersectionsAccess().getINTERSECTIONKeyword_1_0_1());
            	                  
            	            }

            	            }
            	            break;

            	    }

            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6138:2: ( (lv_intersectionElements_3_0= ruleIntersectionElements ) )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6139:1: (lv_intersectionElements_3_0= ruleIntersectionElements )
            	    {
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6139:1: (lv_intersectionElements_3_0= ruleIntersectionElements )
            	    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6140:3: lv_intersectionElements_3_0= ruleIntersectionElements
            	    {
            	    if ( state.backtracking==0 ) {
            	       
            	      	        newCompositeNode(grammarAccess.getIntersectionsAccess().getIntersectionElementsIntersectionElementsParserRuleCall_1_1_0()); 
            	      	    
            	    }
            	    pushFollow(FOLLOW_ruleIntersectionElements_in_ruleIntersections14762);
            	    lv_intersectionElements_3_0=ruleIntersectionElements();

            	    state._fsp--;
            	    if (state.failed) return current;
            	    if ( state.backtracking==0 ) {

            	      	        if (current==null) {
            	      	            current = createModelElementForParent(grammarAccess.getIntersectionsRule());
            	      	        }
            	             		add(
            	             			current, 
            	             			"intersectionElements",
            	              		lv_intersectionElements_3_0, 
            	              		"IntersectionElements");
            	      	        afterParserOrEnumRuleCall();
            	      	    
            	    }

            	    }


            	    }


            	    }
            	    break;

            	default :
            	    break loop77;
                }
            } while (true);


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntersections"


    // $ANTLR start "entryRuleIntersectionElements"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6164:1: entryRuleIntersectionElements returns [EObject current=null] : iv_ruleIntersectionElements= ruleIntersectionElements EOF ;
    public final EObject entryRuleIntersectionElements() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleIntersectionElements = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6165:2: (iv_ruleIntersectionElements= ruleIntersectionElements EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6166:2: iv_ruleIntersectionElements= ruleIntersectionElements EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getIntersectionElementsRule()); 
            }
            pushFollow(FOLLOW_ruleIntersectionElements_in_entryRuleIntersectionElements14800);
            iv_ruleIntersectionElements=ruleIntersectionElements();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleIntersectionElements; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleIntersectionElements14810); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleIntersectionElements"


    // $ANTLR start "ruleIntersectionElements"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6173:1: ruleIntersectionElements returns [EObject current=null] : ( ( (lv_elements_0_0= ruleElements ) ) ( (lv_exclusions_1_0= ruleExclusions ) )? ) ;
    public final EObject ruleIntersectionElements() throws RecognitionException {
        EObject current = null;

        EObject lv_elements_0_0 = null;

        EObject lv_exclusions_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6176:28: ( ( ( (lv_elements_0_0= ruleElements ) ) ( (lv_exclusions_1_0= ruleExclusions ) )? ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6177:1: ( ( (lv_elements_0_0= ruleElements ) ) ( (lv_exclusions_1_0= ruleExclusions ) )? )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6177:1: ( ( (lv_elements_0_0= ruleElements ) ) ( (lv_exclusions_1_0= ruleExclusions ) )? )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6177:2: ( (lv_elements_0_0= ruleElements ) ) ( (lv_exclusions_1_0= ruleExclusions ) )?
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6177:2: ( (lv_elements_0_0= ruleElements ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6178:1: (lv_elements_0_0= ruleElements )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6178:1: (lv_elements_0_0= ruleElements )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6179:3: lv_elements_0_0= ruleElements
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getIntersectionElementsAccess().getElementsElementsParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleElements_in_ruleIntersectionElements14856);
            lv_elements_0_0=ruleElements();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getIntersectionElementsRule());
              	        }
                     		set(
                     			current, 
                     			"elements",
                      		lv_elements_0_0, 
                      		"Elements");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6195:2: ( (lv_exclusions_1_0= ruleExclusions ) )?
            int alt78=2;
            int LA78_0 = input.LA(1);

            if ( (LA78_0==92) ) {
                alt78=1;
            }
            switch (alt78) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6196:1: (lv_exclusions_1_0= ruleExclusions )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6196:1: (lv_exclusions_1_0= ruleExclusions )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6197:3: lv_exclusions_1_0= ruleExclusions
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getIntersectionElementsAccess().getExclusionsExclusionsParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleExclusions_in_ruleIntersectionElements14877);
                    lv_exclusions_1_0=ruleExclusions();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getIntersectionElementsRule());
                      	        }
                             		set(
                             			current, 
                             			"exclusions",
                              		lv_exclusions_1_0, 
                              		"Exclusions");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleIntersectionElements"


    // $ANTLR start "entryRuleExclusions"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6221:1: entryRuleExclusions returns [EObject current=null] : iv_ruleExclusions= ruleExclusions EOF ;
    public final EObject entryRuleExclusions() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExclusions = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6222:2: (iv_ruleExclusions= ruleExclusions EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6223:2: iv_ruleExclusions= ruleExclusions EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExclusionsRule()); 
            }
            pushFollow(FOLLOW_ruleExclusions_in_entryRuleExclusions14914);
            iv_ruleExclusions=ruleExclusions();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExclusions; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExclusions14924); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExclusions"


    // $ANTLR start "ruleExclusions"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6230:1: ruleExclusions returns [EObject current=null] : (otherlv_0= 'EXCEPT' ( (lv_elements_1_0= ruleElements ) ) ) ;
    public final EObject ruleExclusions() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_elements_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6233:28: ( (otherlv_0= 'EXCEPT' ( (lv_elements_1_0= ruleElements ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6234:1: (otherlv_0= 'EXCEPT' ( (lv_elements_1_0= ruleElements ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6234:1: (otherlv_0= 'EXCEPT' ( (lv_elements_1_0= ruleElements ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6234:3: otherlv_0= 'EXCEPT' ( (lv_elements_1_0= ruleElements ) )
            {
            otherlv_0=(Token)match(input,92,FOLLOW_92_in_ruleExclusions14961); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getExclusionsAccess().getEXCEPTKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6238:1: ( (lv_elements_1_0= ruleElements ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6239:1: (lv_elements_1_0= ruleElements )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6239:1: (lv_elements_1_0= ruleElements )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6240:3: lv_elements_1_0= ruleElements
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExclusionsAccess().getElementsElementsParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleElements_in_ruleExclusions14982);
            lv_elements_1_0=ruleElements();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExclusionsRule());
              	        }
                     		set(
                     			current, 
                     			"elements",
                      		lv_elements_1_0, 
                      		"Elements");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExclusions"


    // $ANTLR start "entryRuleElements"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6264:1: entryRuleElements returns [EObject current=null] : iv_ruleElements= ruleElements EOF ;
    public final EObject entryRuleElements() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleElements = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6265:2: (iv_ruleElements= ruleElements EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6266:2: iv_ruleElements= ruleElements EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getElementsRule()); 
            }
            pushFollow(FOLLOW_ruleElements_in_entryRuleElements15018);
            iv_ruleElements=ruleElements();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleElements; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleElements15028); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleElements"


    // $ANTLR start "ruleElements"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6273:1: ruleElements returns [EObject current=null] : this_SubtypeElements_0= ruleSubtypeElements ;
    public final EObject ruleElements() throws RecognitionException {
        EObject current = null;

        EObject this_SubtypeElements_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6276:28: (this_SubtypeElements_0= ruleSubtypeElements )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6278:5: this_SubtypeElements_0= ruleSubtypeElements
            {
            if ( state.backtracking==0 ) {
               
                      newCompositeNode(grammarAccess.getElementsAccess().getSubtypeElementsParserRuleCall()); 
                  
            }
            pushFollow(FOLLOW_ruleSubtypeElements_in_ruleElements15074);
            this_SubtypeElements_0=ruleSubtypeElements();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               
                      current = this_SubtypeElements_0; 
                      afterParserOrEnumRuleCall();
                  
            }

            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleElements"


    // $ANTLR start "entryRuleSubtypeElements"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6294:1: entryRuleSubtypeElements returns [EObject current=null] : iv_ruleSubtypeElements= ruleSubtypeElements EOF ;
    public final EObject entryRuleSubtypeElements() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSubtypeElements = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6295:2: (iv_ruleSubtypeElements= ruleSubtypeElements EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6296:2: iv_ruleSubtypeElements= ruleSubtypeElements EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSubtypeElementsRule()); 
            }
            pushFollow(FOLLOW_ruleSubtypeElements_in_entryRuleSubtypeElements15108);
            iv_ruleSubtypeElements=ruleSubtypeElements();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSubtypeElements; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSubtypeElements15118); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSubtypeElements"


    // $ANTLR start "ruleSubtypeElements"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6303:1: ruleSubtypeElements returns [EObject current=null] : ( ( ( ruleSingleValue )=>this_SingleValue_0= ruleSingleValue ) | this_ContainedSubtype_1= ruleContainedSubtype | this_ValueRange_2= ruleValueRange | this_PermittedAlphabet_3= rulePermittedAlphabet | this_SizeConstraint_4= ruleSizeConstraint | this_TypeConstraint_5= ruleTypeConstraint ) ;
    public final EObject ruleSubtypeElements() throws RecognitionException {
        EObject current = null;

        EObject this_SingleValue_0 = null;

        EObject this_ContainedSubtype_1 = null;

        EObject this_ValueRange_2 = null;

        EObject this_PermittedAlphabet_3 = null;

        EObject this_SizeConstraint_4 = null;

        EObject this_TypeConstraint_5 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6306:28: ( ( ( ( ruleSingleValue )=>this_SingleValue_0= ruleSingleValue ) | this_ContainedSubtype_1= ruleContainedSubtype | this_ValueRange_2= ruleValueRange | this_PermittedAlphabet_3= rulePermittedAlphabet | this_SizeConstraint_4= ruleSizeConstraint | this_TypeConstraint_5= ruleTypeConstraint ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6307:1: ( ( ( ruleSingleValue )=>this_SingleValue_0= ruleSingleValue ) | this_ContainedSubtype_1= ruleContainedSubtype | this_ValueRange_2= ruleValueRange | this_PermittedAlphabet_3= rulePermittedAlphabet | this_SizeConstraint_4= ruleSizeConstraint | this_TypeConstraint_5= ruleTypeConstraint )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6307:1: ( ( ( ruleSingleValue )=>this_SingleValue_0= ruleSingleValue ) | this_ContainedSubtype_1= ruleContainedSubtype | this_ValueRange_2= ruleValueRange | this_PermittedAlphabet_3= rulePermittedAlphabet | this_SizeConstraint_4= ruleSizeConstraint | this_TypeConstraint_5= ruleTypeConstraint )
            int alt79=6;
            alt79 = dfa79.predict(input);
            switch (alt79) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6307:2: ( ( ruleSingleValue )=>this_SingleValue_0= ruleSingleValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6307:2: ( ( ruleSingleValue )=>this_SingleValue_0= ruleSingleValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6307:3: ( ruleSingleValue )=>this_SingleValue_0= ruleSingleValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSubtypeElementsAccess().getSingleValueParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSingleValue_in_ruleSubtypeElements15171);
                    this_SingleValue_0=ruleSingleValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SingleValue_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6318:5: this_ContainedSubtype_1= ruleContainedSubtype
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSubtypeElementsAccess().getContainedSubtypeParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleContainedSubtype_in_ruleSubtypeElements15199);
                    this_ContainedSubtype_1=ruleContainedSubtype();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ContainedSubtype_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6328:5: this_ValueRange_2= ruleValueRange
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSubtypeElementsAccess().getValueRangeParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleValueRange_in_ruleSubtypeElements15226);
                    this_ValueRange_2=ruleValueRange();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_ValueRange_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 4 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6338:5: this_PermittedAlphabet_3= rulePermittedAlphabet
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSubtypeElementsAccess().getPermittedAlphabetParserRuleCall_3()); 
                          
                    }
                    pushFollow(FOLLOW_rulePermittedAlphabet_in_ruleSubtypeElements15253);
                    this_PermittedAlphabet_3=rulePermittedAlphabet();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_PermittedAlphabet_3; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 5 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6348:5: this_SizeConstraint_4= ruleSizeConstraint
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSubtypeElementsAccess().getSizeConstraintParserRuleCall_4()); 
                          
                    }
                    pushFollow(FOLLOW_ruleSizeConstraint_in_ruleSubtypeElements15280);
                    this_SizeConstraint_4=ruleSizeConstraint();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_SizeConstraint_4; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 6 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6358:5: this_TypeConstraint_5= ruleTypeConstraint
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getSubtypeElementsAccess().getTypeConstraintParserRuleCall_5()); 
                          
                    }
                    pushFollow(FOLLOW_ruleTypeConstraint_in_ruleSubtypeElements15307);
                    this_TypeConstraint_5=ruleTypeConstraint();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_TypeConstraint_5; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSubtypeElements"


    // $ANTLR start "entryRuleSingleValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6374:1: entryRuleSingleValue returns [EObject current=null] : iv_ruleSingleValue= ruleSingleValue EOF ;
    public final EObject entryRuleSingleValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSingleValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6375:2: (iv_ruleSingleValue= ruleSingleValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6376:2: iv_ruleSingleValue= ruleSingleValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSingleValueRule()); 
            }
            pushFollow(FOLLOW_ruleSingleValue_in_entryRuleSingleValue15342);
            iv_ruleSingleValue=ruleSingleValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSingleValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSingleValue15352); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSingleValue"


    // $ANTLR start "ruleSingleValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6383:1: ruleSingleValue returns [EObject current=null] : ( (lv_value_0_0= ruleValue ) ) ;
    public final EObject ruleSingleValue() throws RecognitionException {
        EObject current = null;

        EObject lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6386:28: ( ( (lv_value_0_0= ruleValue ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6387:1: ( (lv_value_0_0= ruleValue ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6387:1: ( (lv_value_0_0= ruleValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6388:1: (lv_value_0_0= ruleValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6388:1: (lv_value_0_0= ruleValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6389:3: lv_value_0_0= ruleValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSingleValueAccess().getValueValueParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleValue_in_ruleSingleValue15397);
            lv_value_0_0=ruleValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSingleValueRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_0_0, 
                      		"Value");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSingleValue"


    // $ANTLR start "entryRuleContainedSubtype"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6413:1: entryRuleContainedSubtype returns [EObject current=null] : iv_ruleContainedSubtype= ruleContainedSubtype EOF ;
    public final EObject entryRuleContainedSubtype() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleContainedSubtype = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6414:2: (iv_ruleContainedSubtype= ruleContainedSubtype EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6415:2: iv_ruleContainedSubtype= ruleContainedSubtype EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getContainedSubtypeRule()); 
            }
            pushFollow(FOLLOW_ruleContainedSubtype_in_entryRuleContainedSubtype15432);
            iv_ruleContainedSubtype=ruleContainedSubtype();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleContainedSubtype; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleContainedSubtype15442); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleContainedSubtype"


    // $ANTLR start "ruleContainedSubtype"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6422:1: ruleContainedSubtype returns [EObject current=null] : (otherlv_0= 'INCLUDES' ( (lv_type_1_0= ruleType ) ) ) ;
    public final EObject ruleContainedSubtype() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_type_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6425:28: ( (otherlv_0= 'INCLUDES' ( (lv_type_1_0= ruleType ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6426:1: (otherlv_0= 'INCLUDES' ( (lv_type_1_0= ruleType ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6426:1: (otherlv_0= 'INCLUDES' ( (lv_type_1_0= ruleType ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6426:3: otherlv_0= 'INCLUDES' ( (lv_type_1_0= ruleType ) )
            {
            otherlv_0=(Token)match(input,93,FOLLOW_93_in_ruleContainedSubtype15479); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getContainedSubtypeAccess().getINCLUDESKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6430:1: ( (lv_type_1_0= ruleType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6431:1: (lv_type_1_0= ruleType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6431:1: (lv_type_1_0= ruleType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6432:3: lv_type_1_0= ruleType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getContainedSubtypeAccess().getTypeTypeParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleType_in_ruleContainedSubtype15500);
            lv_type_1_0=ruleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getContainedSubtypeRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_1_0, 
                      		"Type");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleContainedSubtype"


    // $ANTLR start "entryRuleValueRange"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6456:1: entryRuleValueRange returns [EObject current=null] : iv_ruleValueRange= ruleValueRange EOF ;
    public final EObject entryRuleValueRange() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleValueRange = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6457:2: (iv_ruleValueRange= ruleValueRange EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6458:2: iv_ruleValueRange= ruleValueRange EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getValueRangeRule()); 
            }
            pushFollow(FOLLOW_ruleValueRange_in_entryRuleValueRange15536);
            iv_ruleValueRange=ruleValueRange();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleValueRange; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleValueRange15546); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValueRange"


    // $ANTLR start "ruleValueRange"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6465:1: ruleValueRange returns [EObject current=null] : ( ( (lv_lowerEndpoint_0_0= ruleLowerEndpoint ) ) otherlv_1= '..' ( (lv_upperEndpoint_2_0= ruleUpperEndpoint ) ) ) ;
    public final EObject ruleValueRange() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        EObject lv_lowerEndpoint_0_0 = null;

        EObject lv_upperEndpoint_2_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6468:28: ( ( ( (lv_lowerEndpoint_0_0= ruleLowerEndpoint ) ) otherlv_1= '..' ( (lv_upperEndpoint_2_0= ruleUpperEndpoint ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6469:1: ( ( (lv_lowerEndpoint_0_0= ruleLowerEndpoint ) ) otherlv_1= '..' ( (lv_upperEndpoint_2_0= ruleUpperEndpoint ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6469:1: ( ( (lv_lowerEndpoint_0_0= ruleLowerEndpoint ) ) otherlv_1= '..' ( (lv_upperEndpoint_2_0= ruleUpperEndpoint ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6469:2: ( (lv_lowerEndpoint_0_0= ruleLowerEndpoint ) ) otherlv_1= '..' ( (lv_upperEndpoint_2_0= ruleUpperEndpoint ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6469:2: ( (lv_lowerEndpoint_0_0= ruleLowerEndpoint ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6470:1: (lv_lowerEndpoint_0_0= ruleLowerEndpoint )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6470:1: (lv_lowerEndpoint_0_0= ruleLowerEndpoint )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6471:3: lv_lowerEndpoint_0_0= ruleLowerEndpoint
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getValueRangeAccess().getLowerEndpointLowerEndpointParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleLowerEndpoint_in_ruleValueRange15592);
            lv_lowerEndpoint_0_0=ruleLowerEndpoint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getValueRangeRule());
              	        }
                     		set(
                     			current, 
                     			"lowerEndpoint",
                      		lv_lowerEndpoint_0_0, 
                      		"LowerEndpoint");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            otherlv_1=(Token)match(input,94,FOLLOW_94_in_ruleValueRange15604); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_1, grammarAccess.getValueRangeAccess().getFullStopFullStopKeyword_1());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6491:1: ( (lv_upperEndpoint_2_0= ruleUpperEndpoint ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6492:1: (lv_upperEndpoint_2_0= ruleUpperEndpoint )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6492:1: (lv_upperEndpoint_2_0= ruleUpperEndpoint )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6493:3: lv_upperEndpoint_2_0= ruleUpperEndpoint
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getValueRangeAccess().getUpperEndpointUpperEndpointParserRuleCall_2_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleUpperEndpoint_in_ruleValueRange15625);
            lv_upperEndpoint_2_0=ruleUpperEndpoint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getValueRangeRule());
              	        }
                     		set(
                     			current, 
                     			"upperEndpoint",
                      		lv_upperEndpoint_2_0, 
                      		"UpperEndpoint");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValueRange"


    // $ANTLR start "entryRuleLowerEndpoint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6517:1: entryRuleLowerEndpoint returns [EObject current=null] : iv_ruleLowerEndpoint= ruleLowerEndpoint EOF ;
    public final EObject entryRuleLowerEndpoint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLowerEndpoint = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6518:2: (iv_ruleLowerEndpoint= ruleLowerEndpoint EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6519:2: iv_ruleLowerEndpoint= ruleLowerEndpoint EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLowerEndpointRule()); 
            }
            pushFollow(FOLLOW_ruleLowerEndpoint_in_entryRuleLowerEndpoint15661);
            iv_ruleLowerEndpoint=ruleLowerEndpoint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLowerEndpoint; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleLowerEndpoint15671); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLowerEndpoint"


    // $ANTLR start "ruleLowerEndpoint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6526:1: ruleLowerEndpoint returns [EObject current=null] : ( ( (lv_value_0_0= ruleLowerEndValue ) ) ( (lv_closed_1_0= '<' ) )? ) ;
    public final EObject ruleLowerEndpoint() throws RecognitionException {
        EObject current = null;

        Token lv_closed_1_0=null;
        EObject lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6529:28: ( ( ( (lv_value_0_0= ruleLowerEndValue ) ) ( (lv_closed_1_0= '<' ) )? ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6530:1: ( ( (lv_value_0_0= ruleLowerEndValue ) ) ( (lv_closed_1_0= '<' ) )? )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6530:1: ( ( (lv_value_0_0= ruleLowerEndValue ) ) ( (lv_closed_1_0= '<' ) )? )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6530:2: ( (lv_value_0_0= ruleLowerEndValue ) ) ( (lv_closed_1_0= '<' ) )?
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6530:2: ( (lv_value_0_0= ruleLowerEndValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6531:1: (lv_value_0_0= ruleLowerEndValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6531:1: (lv_value_0_0= ruleLowerEndValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6532:3: lv_value_0_0= ruleLowerEndValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getLowerEndpointAccess().getValueLowerEndValueParserRuleCall_0_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleLowerEndValue_in_ruleLowerEndpoint15717);
            lv_value_0_0=ruleLowerEndValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getLowerEndpointRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_0_0, 
                      		"LowerEndValue");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6548:2: ( (lv_closed_1_0= '<' ) )?
            int alt80=2;
            int LA80_0 = input.LA(1);

            if ( (LA80_0==95) ) {
                alt80=1;
            }
            switch (alt80) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6549:1: (lv_closed_1_0= '<' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6549:1: (lv_closed_1_0= '<' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6550:3: lv_closed_1_0= '<'
                    {
                    lv_closed_1_0=(Token)match(input,95,FOLLOW_95_in_ruleLowerEndpoint15735); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_closed_1_0, grammarAccess.getLowerEndpointAccess().getClosedLessThanSignKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLowerEndpointRule());
                      	        }
                             		setWithLastConsumed(current, "closed", lv_closed_1_0, "<");
                      	    
                    }

                    }


                    }
                    break;

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLowerEndpoint"


    // $ANTLR start "entryRuleUpperEndpoint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6571:1: entryRuleUpperEndpoint returns [EObject current=null] : iv_ruleUpperEndpoint= ruleUpperEndpoint EOF ;
    public final EObject entryRuleUpperEndpoint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUpperEndpoint = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6572:2: (iv_ruleUpperEndpoint= ruleUpperEndpoint EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6573:2: iv_ruleUpperEndpoint= ruleUpperEndpoint EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUpperEndpointRule()); 
            }
            pushFollow(FOLLOW_ruleUpperEndpoint_in_entryRuleUpperEndpoint15785);
            iv_ruleUpperEndpoint=ruleUpperEndpoint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUpperEndpoint; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUpperEndpoint15795); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUpperEndpoint"


    // $ANTLR start "ruleUpperEndpoint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6580:1: ruleUpperEndpoint returns [EObject current=null] : ( ( (lv_closed_0_0= '<' ) )? ( (lv_value_1_0= ruleUpperEndValue ) ) ) ;
    public final EObject ruleUpperEndpoint() throws RecognitionException {
        EObject current = null;

        Token lv_closed_0_0=null;
        EObject lv_value_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6583:28: ( ( ( (lv_closed_0_0= '<' ) )? ( (lv_value_1_0= ruleUpperEndValue ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6584:1: ( ( (lv_closed_0_0= '<' ) )? ( (lv_value_1_0= ruleUpperEndValue ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6584:1: ( ( (lv_closed_0_0= '<' ) )? ( (lv_value_1_0= ruleUpperEndValue ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6584:2: ( (lv_closed_0_0= '<' ) )? ( (lv_value_1_0= ruleUpperEndValue ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6584:2: ( (lv_closed_0_0= '<' ) )?
            int alt81=2;
            int LA81_0 = input.LA(1);

            if ( (LA81_0==95) ) {
                alt81=1;
            }
            switch (alt81) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6585:1: (lv_closed_0_0= '<' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6585:1: (lv_closed_0_0= '<' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6586:3: lv_closed_0_0= '<'
                    {
                    lv_closed_0_0=(Token)match(input,95,FOLLOW_95_in_ruleUpperEndpoint15838); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_closed_0_0, grammarAccess.getUpperEndpointAccess().getClosedLessThanSignKeyword_0_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getUpperEndpointRule());
                      	        }
                             		setWithLastConsumed(current, "closed", lv_closed_0_0, "<");
                      	    
                    }

                    }


                    }
                    break;

            }

            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6599:3: ( (lv_value_1_0= ruleUpperEndValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6600:1: (lv_value_1_0= ruleUpperEndValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6600:1: (lv_value_1_0= ruleUpperEndValue )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6601:3: lv_value_1_0= ruleUpperEndValue
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getUpperEndpointAccess().getValueUpperEndValueParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleUpperEndValue_in_ruleUpperEndpoint15873);
            lv_value_1_0=ruleUpperEndValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getUpperEndpointRule());
              	        }
                     		set(
                     			current, 
                     			"value",
                      		lv_value_1_0, 
                      		"UpperEndValue");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUpperEndpoint"


    // $ANTLR start "entryRuleLowerEndValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6625:1: entryRuleLowerEndValue returns [EObject current=null] : iv_ruleLowerEndValue= ruleLowerEndValue EOF ;
    public final EObject entryRuleLowerEndValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLowerEndValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6626:2: (iv_ruleLowerEndValue= ruleLowerEndValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6627:2: iv_ruleLowerEndValue= ruleLowerEndValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getLowerEndValueRule()); 
            }
            pushFollow(FOLLOW_ruleLowerEndValue_in_entryRuleLowerEndValue15909);
            iv_ruleLowerEndValue=ruleLowerEndValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleLowerEndValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleLowerEndValue15919); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLowerEndValue"


    // $ANTLR start "ruleLowerEndValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6634:1: ruleLowerEndValue returns [EObject current=null] : ( ( (lv_value_0_0= ruleValueRangeValue ) ) | ( (lv_minValue_1_0= 'MIN' ) ) ) ;
    public final EObject ruleLowerEndValue() throws RecognitionException {
        EObject current = null;

        Token lv_minValue_1_0=null;
        EObject lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6637:28: ( ( ( (lv_value_0_0= ruleValueRangeValue ) ) | ( (lv_minValue_1_0= 'MIN' ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6638:1: ( ( (lv_value_0_0= ruleValueRangeValue ) ) | ( (lv_minValue_1_0= 'MIN' ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6638:1: ( ( (lv_value_0_0= ruleValueRangeValue ) ) | ( (lv_minValue_1_0= 'MIN' ) ) )
            int alt82=2;
            int LA82_0 = input.LA(1);

            if ( (LA82_0==RULE_LONG||LA82_0==RULE_STRING||LA82_0==32||LA82_0==99||(LA82_0>=101 && LA82_0<=103)) ) {
                alt82=1;
            }
            else if ( (LA82_0==96) ) {
                alt82=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 82, 0, input);

                throw nvae;
            }
            switch (alt82) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6638:2: ( (lv_value_0_0= ruleValueRangeValue ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6638:2: ( (lv_value_0_0= ruleValueRangeValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6639:1: (lv_value_0_0= ruleValueRangeValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6639:1: (lv_value_0_0= ruleValueRangeValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6640:3: lv_value_0_0= ruleValueRangeValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getLowerEndValueAccess().getValueValueRangeValueParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValueRangeValue_in_ruleLowerEndValue15965);
                    lv_value_0_0=ruleValueRangeValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getLowerEndValueRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_0_0, 
                              		"ValueRangeValue");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6657:6: ( (lv_minValue_1_0= 'MIN' ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6657:6: ( (lv_minValue_1_0= 'MIN' ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6658:1: (lv_minValue_1_0= 'MIN' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6658:1: (lv_minValue_1_0= 'MIN' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6659:3: lv_minValue_1_0= 'MIN'
                    {
                    lv_minValue_1_0=(Token)match(input,96,FOLLOW_96_in_ruleLowerEndValue15989); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_minValue_1_0, grammarAccess.getLowerEndValueAccess().getMinValueMINKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getLowerEndValueRule());
                      	        }
                             		setWithLastConsumed(current, "minValue", lv_minValue_1_0, "MIN");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLowerEndValue"


    // $ANTLR start "entryRuleUpperEndValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6680:1: entryRuleUpperEndValue returns [EObject current=null] : iv_ruleUpperEndValue= ruleUpperEndValue EOF ;
    public final EObject entryRuleUpperEndValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleUpperEndValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6681:2: (iv_ruleUpperEndValue= ruleUpperEndValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6682:2: iv_ruleUpperEndValue= ruleUpperEndValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getUpperEndValueRule()); 
            }
            pushFollow(FOLLOW_ruleUpperEndValue_in_entryRuleUpperEndValue16038);
            iv_ruleUpperEndValue=ruleUpperEndValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleUpperEndValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleUpperEndValue16048); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleUpperEndValue"


    // $ANTLR start "ruleUpperEndValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6689:1: ruleUpperEndValue returns [EObject current=null] : ( ( (lv_value_0_0= ruleValueRangeValue ) ) | ( (lv_maxValue_1_0= 'MAX' ) ) ) ;
    public final EObject ruleUpperEndValue() throws RecognitionException {
        EObject current = null;

        Token lv_maxValue_1_0=null;
        EObject lv_value_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6692:28: ( ( ( (lv_value_0_0= ruleValueRangeValue ) ) | ( (lv_maxValue_1_0= 'MAX' ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6693:1: ( ( (lv_value_0_0= ruleValueRangeValue ) ) | ( (lv_maxValue_1_0= 'MAX' ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6693:1: ( ( (lv_value_0_0= ruleValueRangeValue ) ) | ( (lv_maxValue_1_0= 'MAX' ) ) )
            int alt83=2;
            int LA83_0 = input.LA(1);

            if ( (LA83_0==RULE_LONG||LA83_0==RULE_STRING||LA83_0==32||LA83_0==99||(LA83_0>=101 && LA83_0<=103)) ) {
                alt83=1;
            }
            else if ( (LA83_0==97) ) {
                alt83=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 83, 0, input);

                throw nvae;
            }
            switch (alt83) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6693:2: ( (lv_value_0_0= ruleValueRangeValue ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6693:2: ( (lv_value_0_0= ruleValueRangeValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6694:1: (lv_value_0_0= ruleValueRangeValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6694:1: (lv_value_0_0= ruleValueRangeValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6695:3: lv_value_0_0= ruleValueRangeValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getUpperEndValueAccess().getValueValueRangeValueParserRuleCall_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValueRangeValue_in_ruleUpperEndValue16094);
                    lv_value_0_0=ruleValueRangeValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getUpperEndValueRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_0_0, 
                              		"ValueRangeValue");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6712:6: ( (lv_maxValue_1_0= 'MAX' ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6712:6: ( (lv_maxValue_1_0= 'MAX' ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6713:1: (lv_maxValue_1_0= 'MAX' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6713:1: (lv_maxValue_1_0= 'MAX' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6714:3: lv_maxValue_1_0= 'MAX'
                    {
                    lv_maxValue_1_0=(Token)match(input,97,FOLLOW_97_in_ruleUpperEndValue16118); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              newLeafNode(lv_maxValue_1_0, grammarAccess.getUpperEndValueAccess().getMaxValueMAXKeyword_1_0());
                          
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getUpperEndValueRule());
                      	        }
                             		setWithLastConsumed(current, "maxValue", lv_maxValue_1_0, "MAX");
                      	    
                    }

                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleUpperEndValue"


    // $ANTLR start "entryRuleSizeConstraint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6735:1: entryRuleSizeConstraint returns [EObject current=null] : iv_ruleSizeConstraint= ruleSizeConstraint EOF ;
    public final EObject entryRuleSizeConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSizeConstraint = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6736:2: (iv_ruleSizeConstraint= ruleSizeConstraint EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6737:2: iv_ruleSizeConstraint= ruleSizeConstraint EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSizeConstraintRule()); 
            }
            pushFollow(FOLLOW_ruleSizeConstraint_in_entryRuleSizeConstraint16167);
            iv_ruleSizeConstraint=ruleSizeConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSizeConstraint; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSizeConstraint16177); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSizeConstraint"


    // $ANTLR start "ruleSizeConstraint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6744:1: ruleSizeConstraint returns [EObject current=null] : (otherlv_0= 'SIZE' ( (lv_constraint_1_0= ruleConstraint ) ) ) ;
    public final EObject ruleSizeConstraint() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_constraint_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6747:28: ( (otherlv_0= 'SIZE' ( (lv_constraint_1_0= ruleConstraint ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6748:1: (otherlv_0= 'SIZE' ( (lv_constraint_1_0= ruleConstraint ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6748:1: (otherlv_0= 'SIZE' ( (lv_constraint_1_0= ruleConstraint ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6748:3: otherlv_0= 'SIZE' ( (lv_constraint_1_0= ruleConstraint ) )
            {
            otherlv_0=(Token)match(input,98,FOLLOW_98_in_ruleSizeConstraint16214); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getSizeConstraintAccess().getSIZEKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6752:1: ( (lv_constraint_1_0= ruleConstraint ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6753:1: (lv_constraint_1_0= ruleConstraint )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6753:1: (lv_constraint_1_0= ruleConstraint )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6754:3: lv_constraint_1_0= ruleConstraint
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getSizeConstraintAccess().getConstraintConstraintParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleConstraint_in_ruleSizeConstraint16235);
            lv_constraint_1_0=ruleConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getSizeConstraintRule());
              	        }
                     		set(
                     			current, 
                     			"constraint",
                      		lv_constraint_1_0, 
                      		"Constraint");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSizeConstraint"


    // $ANTLR start "entryRuleTypeConstraint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6778:1: entryRuleTypeConstraint returns [EObject current=null] : iv_ruleTypeConstraint= ruleTypeConstraint EOF ;
    public final EObject entryRuleTypeConstraint() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTypeConstraint = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6779:2: (iv_ruleTypeConstraint= ruleTypeConstraint EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6780:2: iv_ruleTypeConstraint= ruleTypeConstraint EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getTypeConstraintRule()); 
            }
            pushFollow(FOLLOW_ruleTypeConstraint_in_entryRuleTypeConstraint16271);
            iv_ruleTypeConstraint=ruleTypeConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleTypeConstraint; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleTypeConstraint16281); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTypeConstraint"


    // $ANTLR start "ruleTypeConstraint"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6787:1: ruleTypeConstraint returns [EObject current=null] : ( (lv_type_0_0= ruleType ) ) ;
    public final EObject ruleTypeConstraint() throws RecognitionException {
        EObject current = null;

        EObject lv_type_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6790:28: ( ( (lv_type_0_0= ruleType ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6791:1: ( (lv_type_0_0= ruleType ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6791:1: ( (lv_type_0_0= ruleType ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6792:1: (lv_type_0_0= ruleType )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6792:1: (lv_type_0_0= ruleType )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6793:3: lv_type_0_0= ruleType
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getTypeConstraintAccess().getTypeTypeParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleType_in_ruleTypeConstraint16326);
            lv_type_0_0=ruleType();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getTypeConstraintRule());
              	        }
                     		set(
                     			current, 
                     			"type",
                      		lv_type_0_0, 
                      		"Type");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTypeConstraint"


    // $ANTLR start "entryRulePermittedAlphabet"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6817:1: entryRulePermittedAlphabet returns [EObject current=null] : iv_rulePermittedAlphabet= rulePermittedAlphabet EOF ;
    public final EObject entryRulePermittedAlphabet() throws RecognitionException {
        EObject current = null;

        EObject iv_rulePermittedAlphabet = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6818:2: (iv_rulePermittedAlphabet= rulePermittedAlphabet EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6819:2: iv_rulePermittedAlphabet= rulePermittedAlphabet EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getPermittedAlphabetRule()); 
            }
            pushFollow(FOLLOW_rulePermittedAlphabet_in_entryRulePermittedAlphabet16361);
            iv_rulePermittedAlphabet=rulePermittedAlphabet();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_rulePermittedAlphabet; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRulePermittedAlphabet16371); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRulePermittedAlphabet"


    // $ANTLR start "rulePermittedAlphabet"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6826:1: rulePermittedAlphabet returns [EObject current=null] : (otherlv_0= 'FROM' ( (lv_constraint_1_0= ruleConstraint ) ) ) ;
    public final EObject rulePermittedAlphabet() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        EObject lv_constraint_1_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6829:28: ( (otherlv_0= 'FROM' ( (lv_constraint_1_0= ruleConstraint ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6830:1: (otherlv_0= 'FROM' ( (lv_constraint_1_0= ruleConstraint ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6830:1: (otherlv_0= 'FROM' ( (lv_constraint_1_0= ruleConstraint ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6830:3: otherlv_0= 'FROM' ( (lv_constraint_1_0= ruleConstraint ) )
            {
            otherlv_0=(Token)match(input,29,FOLLOW_29_in_rulePermittedAlphabet16408); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                  	newLeafNode(otherlv_0, grammarAccess.getPermittedAlphabetAccess().getFROMKeyword_0());
                  
            }
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6834:1: ( (lv_constraint_1_0= ruleConstraint ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6835:1: (lv_constraint_1_0= ruleConstraint )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6835:1: (lv_constraint_1_0= ruleConstraint )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6836:3: lv_constraint_1_0= ruleConstraint
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getPermittedAlphabetAccess().getConstraintConstraintParserRuleCall_1_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleConstraint_in_rulePermittedAlphabet16429);
            lv_constraint_1_0=ruleConstraint();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getPermittedAlphabetRule());
              	        }
                     		set(
                     			current, 
                     			"constraint",
                      		lv_constraint_1_0, 
                      		"Constraint");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "rulePermittedAlphabet"


    // $ANTLR start "entryRuleValueRangeValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6860:1: entryRuleValueRangeValue returns [EObject current=null] : iv_ruleValueRangeValue= ruleValueRangeValue EOF ;
    public final EObject entryRuleValueRangeValue() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleValueRangeValue = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6861:2: (iv_ruleValueRangeValue= ruleValueRangeValue EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6862:2: iv_ruleValueRangeValue= ruleValueRangeValue EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getValueRangeValueRule()); 
            }
            pushFollow(FOLLOW_ruleValueRangeValue_in_entryRuleValueRangeValue16465);
            iv_ruleValueRangeValue=ruleValueRangeValue();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleValueRangeValue; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleValueRangeValue16475); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleValueRangeValue"


    // $ANTLR start "ruleValueRangeValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6869:1: ruleValueRangeValue returns [EObject current=null] : (this_IntegerValue_0= ruleIntegerValue | this_RealValue_1= ruleRealValue | this_RestrictedCharacterStringValue_2= ruleRestrictedCharacterStringValue ) ;
    public final EObject ruleValueRangeValue() throws RecognitionException {
        EObject current = null;

        EObject this_IntegerValue_0 = null;

        EObject this_RealValue_1 = null;

        EObject this_RestrictedCharacterStringValue_2 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6872:28: ( (this_IntegerValue_0= ruleIntegerValue | this_RealValue_1= ruleRealValue | this_RestrictedCharacterStringValue_2= ruleRestrictedCharacterStringValue ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6873:1: (this_IntegerValue_0= ruleIntegerValue | this_RealValue_1= ruleRealValue | this_RestrictedCharacterStringValue_2= ruleRestrictedCharacterStringValue )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6873:1: (this_IntegerValue_0= ruleIntegerValue | this_RealValue_1= ruleRealValue | this_RestrictedCharacterStringValue_2= ruleRestrictedCharacterStringValue )
            int alt84=3;
            switch ( input.LA(1) ) {
            case 99:
                {
                int LA84_1 = input.LA(2);

                if ( (LA84_1==RULE_LONG) ) {
                    int LA84_2 = input.LA(3);

                    if ( (LA84_2==EOF||(LA84_2>=RULE_ID && LA84_2<=RULE_LONG)||LA84_2==25||(LA84_2>=30 && LA84_2<=31)||(LA84_2>=35 && LA84_2<=36)||LA84_2==38||LA84_2==42||LA84_2==44||(LA84_2>=46 && LA84_2<=47)||(LA84_2>=58 && LA84_2<=60)||LA84_2==65||(LA84_2>=67 && LA84_2<=92)||(LA84_2>=94 && LA84_2<=95)) ) {
                        alt84=1;
                    }
                    else if ( (LA84_2==100) ) {
                        alt84=2;
                    }
                    else {
                        if (state.backtracking>0) {state.failed=true; return current;}
                        NoViableAltException nvae =
                            new NoViableAltException("", 84, 2, input);

                        throw nvae;
                    }
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 84, 1, input);

                    throw nvae;
                }
                }
                break;
            case RULE_LONG:
                {
                int LA84_2 = input.LA(2);

                if ( (LA84_2==EOF||(LA84_2>=RULE_ID && LA84_2<=RULE_LONG)||LA84_2==25||(LA84_2>=30 && LA84_2<=31)||(LA84_2>=35 && LA84_2<=36)||LA84_2==38||LA84_2==42||LA84_2==44||(LA84_2>=46 && LA84_2<=47)||(LA84_2>=58 && LA84_2<=60)||LA84_2==65||(LA84_2>=67 && LA84_2<=92)||(LA84_2>=94 && LA84_2<=95)) ) {
                    alt84=1;
                }
                else if ( (LA84_2==100) ) {
                    alt84=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 84, 2, input);

                    throw nvae;
                }
                }
                break;
            case 32:
            case 101:
            case 102:
            case 103:
                {
                alt84=2;
                }
                break;
            case RULE_STRING:
                {
                alt84=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 84, 0, input);

                throw nvae;
            }

            switch (alt84) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6874:5: this_IntegerValue_0= ruleIntegerValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getValueRangeValueAccess().getIntegerValueParserRuleCall_0()); 
                          
                    }
                    pushFollow(FOLLOW_ruleIntegerValue_in_ruleValueRangeValue16522);
                    this_IntegerValue_0=ruleIntegerValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_IntegerValue_0; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6884:5: this_RealValue_1= ruleRealValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getValueRangeValueAccess().getRealValueParserRuleCall_1()); 
                          
                    }
                    pushFollow(FOLLOW_ruleRealValue_in_ruleValueRangeValue16549);
                    this_RealValue_1=ruleRealValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_RealValue_1; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6894:5: this_RestrictedCharacterStringValue_2= ruleRestrictedCharacterStringValue
                    {
                    if ( state.backtracking==0 ) {
                       
                              newCompositeNode(grammarAccess.getValueRangeValueAccess().getRestrictedCharacterStringValueParserRuleCall_2()); 
                          
                    }
                    pushFollow(FOLLOW_ruleRestrictedCharacterStringValue_in_ruleValueRangeValue16576);
                    this_RestrictedCharacterStringValue_2=ruleRestrictedCharacterStringValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {
                       
                              current = this_RestrictedCharacterStringValue_2; 
                              afterParserOrEnumRuleCall();
                          
                    }

                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleValueRangeValue"


    // $ANTLR start "entryRuleExceptionSpec"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6910:1: entryRuleExceptionSpec returns [EObject current=null] : iv_ruleExceptionSpec= ruleExceptionSpec EOF ;
    public final EObject entryRuleExceptionSpec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExceptionSpec = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6911:2: (iv_ruleExceptionSpec= ruleExceptionSpec EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6912:2: iv_ruleExceptionSpec= ruleExceptionSpec EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExceptionSpecRule()); 
            }
            pushFollow(FOLLOW_ruleExceptionSpec_in_entryRuleExceptionSpec16611);
            iv_ruleExceptionSpec=ruleExceptionSpec();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExceptionSpec; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExceptionSpec16621); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExceptionSpec"


    // $ANTLR start "ruleExceptionSpec"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6919:1: ruleExceptionSpec returns [EObject current=null] : ( (lv_exception_0_0= ruleExceptionIdentification ) ) ;
    public final EObject ruleExceptionSpec() throws RecognitionException {
        EObject current = null;

        EObject lv_exception_0_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6922:28: ( ( (lv_exception_0_0= ruleExceptionIdentification ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6923:1: ( (lv_exception_0_0= ruleExceptionIdentification ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6923:1: ( (lv_exception_0_0= ruleExceptionIdentification ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6924:1: (lv_exception_0_0= ruleExceptionIdentification )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6924:1: (lv_exception_0_0= ruleExceptionIdentification )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6925:3: lv_exception_0_0= ruleExceptionIdentification
            {
            if ( state.backtracking==0 ) {
               
              	        newCompositeNode(grammarAccess.getExceptionSpecAccess().getExceptionExceptionIdentificationParserRuleCall_0()); 
              	    
            }
            pushFollow(FOLLOW_ruleExceptionIdentification_in_ruleExceptionSpec16666);
            lv_exception_0_0=ruleExceptionIdentification();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {

              	        if (current==null) {
              	            current = createModelElementForParent(grammarAccess.getExceptionSpecRule());
              	        }
                     		set(
                     			current, 
                     			"exception",
                      		lv_exception_0_0, 
                      		"ExceptionIdentification");
              	        afterParserOrEnumRuleCall();
              	    
            }

            }


            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExceptionSpec"


    // $ANTLR start "entryRuleExceptionIdentification"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6949:1: entryRuleExceptionIdentification returns [EObject current=null] : iv_ruleExceptionIdentification= ruleExceptionIdentification EOF ;
    public final EObject entryRuleExceptionIdentification() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExceptionIdentification = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6950:2: (iv_ruleExceptionIdentification= ruleExceptionIdentification EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6951:2: iv_ruleExceptionIdentification= ruleExceptionIdentification EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getExceptionIdentificationRule()); 
            }
            pushFollow(FOLLOW_ruleExceptionIdentification_in_entryRuleExceptionIdentification16701);
            iv_ruleExceptionIdentification=ruleExceptionIdentification();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleExceptionIdentification; 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleExceptionIdentification16711); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExceptionIdentification"


    // $ANTLR start "ruleExceptionIdentification"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6958:1: ruleExceptionIdentification returns [EObject current=null] : ( ( (lv_number_0_0= RULE_LONG ) ) | ( (lv_defValue_1_0= ruleDefinedValue ) ) | ( ( (lv_type_2_0= ruleType ) ) otherlv_3= ':' ( (lv_value_4_0= ruleValue ) ) ) ) ;
    public final EObject ruleExceptionIdentification() throws RecognitionException {
        EObject current = null;

        Token lv_number_0_0=null;
        Token otherlv_3=null;
        EObject lv_defValue_1_0 = null;

        EObject lv_type_2_0 = null;

        EObject lv_value_4_0 = null;


         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6961:28: ( ( ( (lv_number_0_0= RULE_LONG ) ) | ( (lv_defValue_1_0= ruleDefinedValue ) ) | ( ( (lv_type_2_0= ruleType ) ) otherlv_3= ':' ( (lv_value_4_0= ruleValue ) ) ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6962:1: ( ( (lv_number_0_0= RULE_LONG ) ) | ( (lv_defValue_1_0= ruleDefinedValue ) ) | ( ( (lv_type_2_0= ruleType ) ) otherlv_3= ':' ( (lv_value_4_0= ruleValue ) ) ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6962:1: ( ( (lv_number_0_0= RULE_LONG ) ) | ( (lv_defValue_1_0= ruleDefinedValue ) ) | ( ( (lv_type_2_0= ruleType ) ) otherlv_3= ':' ( (lv_value_4_0= ruleValue ) ) ) )
            int alt85=3;
            switch ( input.LA(1) ) {
            case RULE_LONG:
                {
                alt85=1;
                }
                break;
            case RULE_ID:
                {
                int LA85_2 = input.LA(2);

                if ( (LA85_2==48) ) {
                    alt85=3;
                }
                else if ( (LA85_2==EOF||LA85_2==RULE_ID||LA85_2==25||LA85_2==33||LA85_2==35||LA85_2==37||LA85_2==49||LA85_2==53) ) {
                    alt85=2;
                }
                else {
                    if (state.backtracking>0) {state.failed=true; return current;}
                    NoViableAltException nvae =
                        new NoViableAltException("", 85, 2, input);

                    throw nvae;
                }
                }
                break;
            case 30:
            case 31:
            case 36:
            case 38:
            case 42:
            case 44:
            case 46:
            case 47:
            case 58:
            case 59:
            case 60:
            case 65:
            case 67:
            case 68:
            case 69:
            case 70:
            case 71:
            case 72:
            case 73:
            case 74:
            case 75:
            case 76:
            case 77:
            case 78:
            case 79:
            case 80:
            case 81:
            case 82:
            case 83:
            case 84:
            case 85:
            case 86:
            case 87:
                {
                alt85=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 85, 0, input);

                throw nvae;
            }

            switch (alt85) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6962:2: ( (lv_number_0_0= RULE_LONG ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6962:2: ( (lv_number_0_0= RULE_LONG ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6963:1: (lv_number_0_0= RULE_LONG )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6963:1: (lv_number_0_0= RULE_LONG )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6964:3: lv_number_0_0= RULE_LONG
                    {
                    lv_number_0_0=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleExceptionIdentification16753); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      			newLeafNode(lv_number_0_0, grammarAccess.getExceptionIdentificationAccess().getNumberLONGTerminalRuleCall_0_0()); 
                      		
                    }
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElement(grammarAccess.getExceptionIdentificationRule());
                      	        }
                             		setWithLastConsumed(
                             			current, 
                             			"number",
                              		lv_number_0_0, 
                              		"LONG");
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6981:6: ( (lv_defValue_1_0= ruleDefinedValue ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6981:6: ( (lv_defValue_1_0= ruleDefinedValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6982:1: (lv_defValue_1_0= ruleDefinedValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6982:1: (lv_defValue_1_0= ruleDefinedValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6983:3: lv_defValue_1_0= ruleDefinedValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getExceptionIdentificationAccess().getDefValueDefinedValueParserRuleCall_1_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleDefinedValue_in_ruleExceptionIdentification16785);
                    lv_defValue_1_0=ruleDefinedValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getExceptionIdentificationRule());
                      	        }
                             		set(
                             			current, 
                             			"defValue",
                              		lv_defValue_1_0, 
                              		"DefinedValue");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7000:6: ( ( (lv_type_2_0= ruleType ) ) otherlv_3= ':' ( (lv_value_4_0= ruleValue ) ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7000:6: ( ( (lv_type_2_0= ruleType ) ) otherlv_3= ':' ( (lv_value_4_0= ruleValue ) ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7000:7: ( (lv_type_2_0= ruleType ) ) otherlv_3= ':' ( (lv_value_4_0= ruleValue ) )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7000:7: ( (lv_type_2_0= ruleType ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7001:1: (lv_type_2_0= ruleType )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7001:1: (lv_type_2_0= ruleType )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7002:3: lv_type_2_0= ruleType
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getExceptionIdentificationAccess().getTypeTypeParserRuleCall_2_0_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleType_in_ruleExceptionIdentification16813);
                    lv_type_2_0=ruleType();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getExceptionIdentificationRule());
                      	        }
                             		set(
                             			current, 
                             			"type",
                              		lv_type_2_0, 
                              		"Type");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }

                    otherlv_3=(Token)match(input,48,FOLLOW_48_in_ruleExceptionIdentification16825); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                          	newLeafNode(otherlv_3, grammarAccess.getExceptionIdentificationAccess().getColonKeyword_2_1());
                          
                    }
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7022:1: ( (lv_value_4_0= ruleValue ) )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7023:1: (lv_value_4_0= ruleValue )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7023:1: (lv_value_4_0= ruleValue )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7024:3: lv_value_4_0= ruleValue
                    {
                    if ( state.backtracking==0 ) {
                       
                      	        newCompositeNode(grammarAccess.getExceptionIdentificationAccess().getValueValueParserRuleCall_2_2_0()); 
                      	    
                    }
                    pushFollow(FOLLOW_ruleValue_in_ruleExceptionIdentification16846);
                    lv_value_4_0=ruleValue();

                    state._fsp--;
                    if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                      	        if (current==null) {
                      	            current = createModelElementForParent(grammarAccess.getExceptionIdentificationRule());
                      	        }
                             		set(
                             			current, 
                             			"value",
                              		lv_value_4_0, 
                              		"Value");
                      	        afterParserOrEnumRuleCall();
                      	    
                    }

                    }


                    }


                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExceptionIdentification"


    // $ANTLR start "entryRuleSignedNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7048:1: entryRuleSignedNumber returns [String current=null] : iv_ruleSignedNumber= ruleSignedNumber EOF ;
    public final String entryRuleSignedNumber() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleSignedNumber = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7049:2: (iv_ruleSignedNumber= ruleSignedNumber EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7050:2: iv_ruleSignedNumber= ruleSignedNumber EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getSignedNumberRule()); 
            }
            pushFollow(FOLLOW_ruleSignedNumber_in_entryRuleSignedNumber16884);
            iv_ruleSignedNumber=ruleSignedNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleSignedNumber.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleSignedNumber16895); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSignedNumber"


    // $ANTLR start "ruleSignedNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7057:1: ruleSignedNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_LONG_1= RULE_LONG ) ;
    public final AntlrDatatypeRuleToken ruleSignedNumber() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        Token this_LONG_1=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7060:28: ( ( (kw= '-' )? this_LONG_1= RULE_LONG ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7061:1: ( (kw= '-' )? this_LONG_1= RULE_LONG )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7061:1: ( (kw= '-' )? this_LONG_1= RULE_LONG )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7061:2: (kw= '-' )? this_LONG_1= RULE_LONG
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7061:2: (kw= '-' )?
            int alt86=2;
            int LA86_0 = input.LA(1);

            if ( (LA86_0==99) ) {
                alt86=1;
            }
            switch (alt86) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7062:2: kw= '-'
                    {
                    kw=(Token)match(input,99,FOLLOW_99_in_ruleSignedNumber16934); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getSignedNumberAccess().getHyphenMinusKeyword_0()); 
                          
                    }

                    }
                    break;

            }

            this_LONG_1=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleSignedNumber16951); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_LONG_1);
                  
            }
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_LONG_1, grammarAccess.getSignedNumberAccess().getLONGTerminalRuleCall_1()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSignedNumber"


    // $ANTLR start "entryRuleDoubleNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7082:1: entryRuleDoubleNumber returns [String current=null] : iv_ruleDoubleNumber= ruleDoubleNumber EOF ;
    public final String entryRuleDoubleNumber() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleDoubleNumber = null;


        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7083:2: (iv_ruleDoubleNumber= ruleDoubleNumber EOF )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7084:2: iv_ruleDoubleNumber= ruleDoubleNumber EOF
            {
            if ( state.backtracking==0 ) {
               newCompositeNode(grammarAccess.getDoubleNumberRule()); 
            }
            pushFollow(FOLLOW_ruleDoubleNumber_in_entryRuleDoubleNumber16997);
            iv_ruleDoubleNumber=ruleDoubleNumber();

            state._fsp--;
            if (state.failed) return current;
            if ( state.backtracking==0 ) {
               current =iv_ruleDoubleNumber.getText(); 
            }
            match(input,EOF,FOLLOW_EOF_in_entryRuleDoubleNumber17008); if (state.failed) return current;

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleDoubleNumber"


    // $ANTLR start "ruleDoubleNumber"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7091:1: ruleDoubleNumber returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : ( (kw= '-' )? this_LONG_1= RULE_LONG kw= '.' this_LONG_3= RULE_LONG ) ;
    public final AntlrDatatypeRuleToken ruleDoubleNumber() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token kw=null;
        Token this_LONG_1=null;
        Token this_LONG_3=null;

         enterRule(); 
            
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7094:28: ( ( (kw= '-' )? this_LONG_1= RULE_LONG kw= '.' this_LONG_3= RULE_LONG ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7095:1: ( (kw= '-' )? this_LONG_1= RULE_LONG kw= '.' this_LONG_3= RULE_LONG )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7095:1: ( (kw= '-' )? this_LONG_1= RULE_LONG kw= '.' this_LONG_3= RULE_LONG )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7095:2: (kw= '-' )? this_LONG_1= RULE_LONG kw= '.' this_LONG_3= RULE_LONG
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7095:2: (kw= '-' )?
            int alt87=2;
            int LA87_0 = input.LA(1);

            if ( (LA87_0==99) ) {
                alt87=1;
            }
            switch (alt87) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7096:2: kw= '-'
                    {
                    kw=(Token)match(input,99,FOLLOW_99_in_ruleDoubleNumber17047); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current.merge(kw);
                              newLeafNode(kw, grammarAccess.getDoubleNumberAccess().getHyphenMinusKeyword_0()); 
                          
                    }

                    }
                    break;

            }

            this_LONG_1=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleDoubleNumber17064); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_LONG_1);
                  
            }
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_LONG_1, grammarAccess.getDoubleNumberAccess().getLONGTerminalRuleCall_1()); 
                  
            }
            kw=(Token)match(input,100,FOLLOW_100_in_ruleDoubleNumber17082); if (state.failed) return current;
            if ( state.backtracking==0 ) {

                      current.merge(kw);
                      newLeafNode(kw, grammarAccess.getDoubleNumberAccess().getFullStopKeyword_2()); 
                  
            }
            this_LONG_3=(Token)match(input,RULE_LONG,FOLLOW_RULE_LONG_in_ruleDoubleNumber17097); if (state.failed) return current;
            if ( state.backtracking==0 ) {

              		current.merge(this_LONG_3);
                  
            }
            if ( state.backtracking==0 ) {
               
                  newLeafNode(this_LONG_3, grammarAccess.getDoubleNumberAccess().getLONGTerminalRuleCall_3()); 
                  
            }

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleDoubleNumber"


    // $ANTLR start "ruleSpecialValue"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7129:1: ruleSpecialValue returns [Enumerator current=null] : ( (enumLiteral_0= 'PLUS-INFINITY' ) | (enumLiteral_1= 'MINUS-INFINITY' ) | (enumLiteral_2= 'NOT-A-NUMBER' ) ) ;
    public final Enumerator ruleSpecialValue() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;
        Token enumLiteral_2=null;

         enterRule(); 
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7131:28: ( ( (enumLiteral_0= 'PLUS-INFINITY' ) | (enumLiteral_1= 'MINUS-INFINITY' ) | (enumLiteral_2= 'NOT-A-NUMBER' ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7132:1: ( (enumLiteral_0= 'PLUS-INFINITY' ) | (enumLiteral_1= 'MINUS-INFINITY' ) | (enumLiteral_2= 'NOT-A-NUMBER' ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7132:1: ( (enumLiteral_0= 'PLUS-INFINITY' ) | (enumLiteral_1= 'MINUS-INFINITY' ) | (enumLiteral_2= 'NOT-A-NUMBER' ) )
            int alt88=3;
            switch ( input.LA(1) ) {
            case 101:
                {
                alt88=1;
                }
                break;
            case 102:
                {
                alt88=2;
                }
                break;
            case 103:
                {
                alt88=3;
                }
                break;
            default:
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 88, 0, input);

                throw nvae;
            }

            switch (alt88) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7132:2: (enumLiteral_0= 'PLUS-INFINITY' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7132:2: (enumLiteral_0= 'PLUS-INFINITY' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7132:4: enumLiteral_0= 'PLUS-INFINITY'
                    {
                    enumLiteral_0=(Token)match(input,101,FOLLOW_101_in_ruleSpecialValue17156); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getSpecialValueAccess().getPLUS_INFINITYEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getSpecialValueAccess().getPLUS_INFINITYEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7138:6: (enumLiteral_1= 'MINUS-INFINITY' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7138:6: (enumLiteral_1= 'MINUS-INFINITY' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7138:8: enumLiteral_1= 'MINUS-INFINITY'
                    {
                    enumLiteral_1=(Token)match(input,102,FOLLOW_102_in_ruleSpecialValue17173); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getSpecialValueAccess().getMINUS_INFINITYEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getSpecialValueAccess().getMINUS_INFINITYEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;
                case 3 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7144:6: (enumLiteral_2= 'NOT-A-NUMBER' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7144:6: (enumLiteral_2= 'NOT-A-NUMBER' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7144:8: enumLiteral_2= 'NOT-A-NUMBER'
                    {
                    enumLiteral_2=(Token)match(input,103,FOLLOW_103_in_ruleSpecialValue17190); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getSpecialValueAccess().getNOT_A_NUMBEREnumLiteralDeclaration_2().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_2, grammarAccess.getSpecialValueAccess().getNOT_A_NUMBEREnumLiteralDeclaration_2()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSpecialValue"


    // $ANTLR start "ruleBOOL"
    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7154:1: ruleBOOL returns [Enumerator current=null] : ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) ) ;
    public final Enumerator ruleBOOL() throws RecognitionException {
        Enumerator current = null;

        Token enumLiteral_0=null;
        Token enumLiteral_1=null;

         enterRule(); 
        try {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7156:28: ( ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) ) )
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7157:1: ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) )
            {
            // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7157:1: ( (enumLiteral_0= 'false' ) | (enumLiteral_1= 'true' ) )
            int alt89=2;
            int LA89_0 = input.LA(1);

            if ( (LA89_0==104) ) {
                alt89=1;
            }
            else if ( (LA89_0==105) ) {
                alt89=2;
            }
            else {
                if (state.backtracking>0) {state.failed=true; return current;}
                NoViableAltException nvae =
                    new NoViableAltException("", 89, 0, input);

                throw nvae;
            }
            switch (alt89) {
                case 1 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7157:2: (enumLiteral_0= 'false' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7157:2: (enumLiteral_0= 'false' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7157:4: enumLiteral_0= 'false'
                    {
                    enumLiteral_0=(Token)match(input,104,FOLLOW_104_in_ruleBOOL17235); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getBOOLAccess().getFalseEnumLiteralDeclaration_0().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_0, grammarAccess.getBOOLAccess().getFalseEnumLiteralDeclaration_0()); 
                          
                    }

                    }


                    }
                    break;
                case 2 :
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7163:6: (enumLiteral_1= 'true' )
                    {
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7163:6: (enumLiteral_1= 'true' )
                    // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:7163:8: enumLiteral_1= 'true'
                    {
                    enumLiteral_1=(Token)match(input,105,FOLLOW_105_in_ruleBOOL17252); if (state.failed) return current;
                    if ( state.backtracking==0 ) {

                              current = grammarAccess.getBOOLAccess().getTrueEnumLiteralDeclaration_1().getEnumLiteral().getInstance();
                              newLeafNode(enumLiteral_1, grammarAccess.getBOOLAccess().getTrueEnumLiteralDeclaration_1()); 
                          
                    }

                    }


                    }
                    break;

            }


            }

            if ( state.backtracking==0 ) {
               leaveRule(); 
            }
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleBOOL"

    // $ANTLR start synpred1_InternalAsn1
    public final void synpred1_InternalAsn1_fragment() throws RecognitionException {   
        // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6307:3: ( ruleSingleValue )
        // ../de.thwildau.tm.moses.asn1/src-gen/de/thwildau/tm/moses/asn1/parser/antlr/internal/InternalAsn1.g:6307:5: ruleSingleValue
        {
        pushFollow(FOLLOW_ruleSingleValue_in_synpred1_InternalAsn115155);
        ruleSingleValue();

        state._fsp--;
        if (state.failed) return ;

        }
    }
    // $ANTLR end synpred1_InternalAsn1

    // Delegated rules

    public final boolean synpred1_InternalAsn1() {
        state.backtracking++;
        int start = input.mark();
        try {
            synpred1_InternalAsn1_fragment(); // can never throw exception
        } catch (RecognitionException re) {
            System.err.println("impossible: "+re);
        }
        boolean success = !state.failed;
        input.rewind(start);
        state.backtracking--;
        state.failed=false;
        return success;
    }


    protected DFA15 dfa15 = new DFA15(this);
    protected DFA79 dfa79 = new DFA79(this);
    static final String DFA15_eotS =
        "\14\uffff";
    static final String DFA15_eofS =
        "\14\uffff";
    static final String DFA15_minS =
        "\2\4\1\102\1\17\1\uffff\1\17\1\4\1\5\2\uffff\1\4\1\uffff";
    static final String DFA15_maxS =
        "\1\4\1\124\1\102\1\17\1\uffff\1\17\1\40\1\151\2\uffff\1\47\1\uffff";
    static final String DFA15_acceptS =
        "\4\uffff\1\1\3\uffff\1\2\1\4\1\uffff\1\3";
    static final String DFA15_specialS =
        "\14\uffff}>";
    static final String[] DFA15_transitionS = {
            "\1\1",
            "\1\3\31\uffff\2\4\4\uffff\1\4\1\uffff\1\4\3\uffff\1\4\1\uffff"+
            "\1\4\1\uffff\1\4\22\uffff\1\2\1\uffff\22\4",
            "\1\5",
            "\1\6",
            "",
            "\1\7",
            "\1\10\33\uffff\1\11",
            "\4\4\27\uffff\1\12\14\uffff\1\4\65\uffff\1\4\1\uffff\5\4",
            "",
            "",
            "\2\13\41\uffff\1\4",
            ""
    };

    static final short[] DFA15_eot = DFA.unpackEncodedString(DFA15_eotS);
    static final short[] DFA15_eof = DFA.unpackEncodedString(DFA15_eofS);
    static final char[] DFA15_min = DFA.unpackEncodedStringToUnsignedChars(DFA15_minS);
    static final char[] DFA15_max = DFA.unpackEncodedStringToUnsignedChars(DFA15_maxS);
    static final short[] DFA15_accept = DFA.unpackEncodedString(DFA15_acceptS);
    static final short[] DFA15_special = DFA.unpackEncodedString(DFA15_specialS);
    static final short[][] DFA15_transition;

    static {
        int numStates = DFA15_transitionS.length;
        DFA15_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA15_transition[i] = DFA.unpackEncodedString(DFA15_transitionS[i]);
        }
    }

    class DFA15 extends DFA {

        public DFA15(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 15;
            this.eot = DFA15_eot;
            this.eof = DFA15_eof;
            this.min = DFA15_min;
            this.max = DFA15_max;
            this.accept = DFA15_accept;
            this.special = DFA15_special;
            this.transition = DFA15_transition;
        }
        public String getDescription() {
            return "816:1: (this_SimpleValueAssignment_0= ruleSimpleValueAssignment | this_ChoiceValueAssignment_1= ruleChoiceValueAssignment | this_ObjectIdentifierValueAssignment_2= ruleObjectIdentifierValueAssignment | this_SequenceValueAssignment_3= ruleSequenceValueAssignment )";
        }
    }
    static final String DFA79_eotS =
        "\114\uffff";
    static final String DFA79_eofS =
        "\3\uffff\1\75\1\uffff\1\75\4\uffff\3\75\63\uffff\1\75\12\uffff"+
        "\1\75";
    static final String DFA79_minS =
        "\1\4\2\uffff\1\4\1\5\1\4\3\uffff\1\47\3\4\1\0\60\uffff\2\5\1\4"+
        "\1\5\1\31\1\50\2\5\1\31\1\51\2\5\1\41\1\4";
    static final String DFA79_maxS =
        "\1\151\2\uffff\1\137\1\5\1\144\3\uffff\1\47\3\137\1\0\60\uffff"+
        "\1\5\1\143\1\137\1\5\1\31\1\50\1\143\1\5\1\31\1\51\1\143\1\5\1\41"+
        "\1\137";
    static final String DFA79_acceptS =
        "\1\uffff\2\1\3\uffff\3\1\5\uffff\1\2\1\3\1\4\1\5\1\6\53\1\16\uffff";
    static final String DFA79_specialS =
        "\1\7\2\uffff\1\3\1\uffff\1\0\4\uffff\1\2\1\1\1\4\1\5\62\uffff\1"+
        "\10\12\uffff\1\6}>";
    static final String[] DFA79_transitionS = {
            "\1\15\1\5\1\6\1\7\1\3\24\uffff\1\20\2\22\1\11\3\uffff\1\22"+
            "\1\uffff\1\22\3\uffff\1\22\1\uffff\1\22\1\10\2\22\12\uffff\3"+
            "\22\4\uffff\1\22\1\uffff\25\22\5\uffff\1\16\2\uffff\1\17\1\uffff"+
            "\1\21\1\4\1\uffff\1\12\1\13\1\14\1\1\1\2",
            "",
            "",
            "\1\32\1\31\23\uffff\1\30\4\uffff\1\34\1\56\3\uffff\1\74\1"+
            "\55\1\uffff\1\62\3\uffff\1\33\1\uffff\1\61\1\uffff\1\57\1\66"+
            "\12\uffff\1\67\1\65\1\70\4\uffff\1\60\1\uffff\1\63\1\52\1\64"+
            "\1\53\1\54\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+
            "\1\47\1\50\1\51\1\71\1\72\1\73\1\26\1\27\1\24\1\25\1\23\1\uffff"+
            "\2\17",
            "\1\5",
            "\1\32\1\31\23\uffff\1\30\4\uffff\1\34\1\56\3\uffff\1\74\1"+
            "\55\1\uffff\1\62\3\uffff\1\33\1\uffff\1\61\1\uffff\1\57\1\66"+
            "\12\uffff\1\67\1\65\1\70\4\uffff\1\60\1\uffff\1\63\1\52\1\64"+
            "\1\53\1\54\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+
            "\1\47\1\50\1\51\1\71\1\72\1\73\1\26\1\27\1\24\1\25\1\23\1\uffff"+
            "\2\17\4\uffff\1\76",
            "",
            "",
            "",
            "\1\77",
            "\1\32\1\31\23\uffff\1\30\4\uffff\1\34\1\56\3\uffff\1\74\1"+
            "\55\1\uffff\1\62\3\uffff\1\33\1\uffff\1\61\1\uffff\1\57\1\66"+
            "\12\uffff\1\67\1\65\1\70\4\uffff\1\60\1\uffff\1\63\1\52\1\64"+
            "\1\53\1\54\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+
            "\1\47\1\50\1\51\1\71\1\72\1\73\1\26\1\27\1\24\1\25\1\23\1\uffff"+
            "\2\17",
            "\1\32\1\31\23\uffff\1\30\4\uffff\1\34\1\56\3\uffff\1\74\1"+
            "\55\1\uffff\1\62\3\uffff\1\33\1\uffff\1\61\1\uffff\1\57\1\66"+
            "\12\uffff\1\67\1\65\1\70\4\uffff\1\60\1\uffff\1\63\1\52\1\64"+
            "\1\53\1\54\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+
            "\1\47\1\50\1\51\1\71\1\72\1\73\1\26\1\27\1\24\1\25\1\23\1\uffff"+
            "\2\17",
            "\1\32\1\31\23\uffff\1\30\4\uffff\1\34\1\56\3\uffff\1\74\1"+
            "\55\1\uffff\1\62\3\uffff\1\33\1\uffff\1\61\1\uffff\1\57\1\66"+
            "\12\uffff\1\67\1\65\1\70\4\uffff\1\60\1\uffff\1\63\1\52\1\64"+
            "\1\53\1\54\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+
            "\1\47\1\50\1\51\1\71\1\72\1\73\1\26\1\27\1\24\1\25\1\23\1\uffff"+
            "\2\17",
            "\1\uffff",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "\1\100",
            "\1\102\135\uffff\1\101",
            "\1\32\1\31\23\uffff\1\30\4\uffff\1\34\1\56\3\uffff\1\74\1"+
            "\55\1\uffff\1\62\3\uffff\1\33\1\uffff\1\61\1\uffff\1\57\1\66"+
            "\12\uffff\1\67\1\65\1\70\4\uffff\1\60\1\uffff\1\63\1\52\1\64"+
            "\1\53\1\54\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+
            "\1\47\1\50\1\51\1\71\1\72\1\73\1\26\1\27\1\24\1\25\1\23\1\uffff"+
            "\2\17",
            "\1\102",
            "\1\103",
            "\1\104",
            "\1\106\135\uffff\1\105",
            "\1\106",
            "\1\107",
            "\1\110",
            "\1\112\135\uffff\1\111",
            "\1\112",
            "\1\113",
            "\1\32\1\31\23\uffff\1\30\4\uffff\1\34\1\56\3\uffff\1\74\1"+
            "\55\1\uffff\1\62\3\uffff\1\33\1\uffff\1\61\1\uffff\1\57\1\66"+
            "\12\uffff\1\67\1\65\1\70\4\uffff\1\60\1\uffff\1\63\1\52\1\64"+
            "\1\53\1\54\1\35\1\36\1\37\1\40\1\41\1\42\1\43\1\44\1\45\1\46"+
            "\1\47\1\50\1\51\1\71\1\72\1\73\1\26\1\27\1\24\1\25\1\23\1\uffff"+
            "\2\17"
    };

    static final short[] DFA79_eot = DFA.unpackEncodedString(DFA79_eotS);
    static final short[] DFA79_eof = DFA.unpackEncodedString(DFA79_eofS);
    static final char[] DFA79_min = DFA.unpackEncodedStringToUnsignedChars(DFA79_minS);
    static final char[] DFA79_max = DFA.unpackEncodedStringToUnsignedChars(DFA79_maxS);
    static final short[] DFA79_accept = DFA.unpackEncodedString(DFA79_acceptS);
    static final short[] DFA79_special = DFA.unpackEncodedString(DFA79_specialS);
    static final short[][] DFA79_transition;

    static {
        int numStates = DFA79_transitionS.length;
        DFA79_transition = new short[numStates][];
        for (int i=0; i<numStates; i++) {
            DFA79_transition[i] = DFA.unpackEncodedString(DFA79_transitionS[i]);
        }
    }

    class DFA79 extends DFA {

        public DFA79(BaseRecognizer recognizer) {
            this.recognizer = recognizer;
            this.decisionNumber = 79;
            this.eot = DFA79_eot;
            this.eof = DFA79_eof;
            this.min = DFA79_min;
            this.max = DFA79_max;
            this.accept = DFA79_accept;
            this.special = DFA79_special;
            this.transition = DFA79_transition;
        }
        public String getDescription() {
            return "6307:1: ( ( ( ruleSingleValue )=>this_SingleValue_0= ruleSingleValue ) | this_ContainedSubtype_1= ruleContainedSubtype | this_ValueRange_2= ruleValueRange | this_PermittedAlphabet_3= rulePermittedAlphabet | this_SizeConstraint_4= ruleSizeConstraint | this_TypeConstraint_5= ruleTypeConstraint )";
        }
        public int specialStateTransition(int s, IntStream _input) throws NoViableAltException {
            TokenStream input = (TokenStream)_input;
        	int _s = s;
            switch ( s ) {
                    case 0 : 
                        int LA79_5 = input.LA(1);

                         
                        int index79_5 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA79_5==100) ) {s = 62;}

                        else if ( ((LA79_5>=94 && LA79_5<=95)) ) {s = 15;}

                        else if ( (LA79_5==92) && (synpred1_InternalAsn1())) {s = 19;}

                        else if ( (LA79_5==90) && (synpred1_InternalAsn1())) {s = 20;}

                        else if ( (LA79_5==91) && (synpred1_InternalAsn1())) {s = 21;}

                        else if ( (LA79_5==88) && (synpred1_InternalAsn1())) {s = 22;}

                        else if ( (LA79_5==89) && (synpred1_InternalAsn1())) {s = 23;}

                        else if ( (LA79_5==25) && (synpred1_InternalAsn1())) {s = 24;}

                        else if ( (LA79_5==RULE_LONG) && (synpred1_InternalAsn1())) {s = 25;}

                        else if ( (LA79_5==RULE_ID) && (synpred1_InternalAsn1())) {s = 26;}

                        else if ( (LA79_5==42) && (synpred1_InternalAsn1())) {s = 27;}

                        else if ( (LA79_5==30) && (synpred1_InternalAsn1())) {s = 28;}

                        else if ( (LA79_5==72) && (synpred1_InternalAsn1())) {s = 29;}

                        else if ( (LA79_5==73) && (synpred1_InternalAsn1())) {s = 30;}

                        else if ( (LA79_5==74) && (synpred1_InternalAsn1())) {s = 31;}

                        else if ( (LA79_5==75) && (synpred1_InternalAsn1())) {s = 32;}

                        else if ( (LA79_5==76) && (synpred1_InternalAsn1())) {s = 33;}

                        else if ( (LA79_5==77) && (synpred1_InternalAsn1())) {s = 34;}

                        else if ( (LA79_5==78) && (synpred1_InternalAsn1())) {s = 35;}

                        else if ( (LA79_5==79) && (synpred1_InternalAsn1())) {s = 36;}

                        else if ( (LA79_5==80) && (synpred1_InternalAsn1())) {s = 37;}

                        else if ( (LA79_5==81) && (synpred1_InternalAsn1())) {s = 38;}

                        else if ( (LA79_5==82) && (synpred1_InternalAsn1())) {s = 39;}

                        else if ( (LA79_5==83) && (synpred1_InternalAsn1())) {s = 40;}

                        else if ( (LA79_5==84) && (synpred1_InternalAsn1())) {s = 41;}

                        else if ( (LA79_5==68) && (synpred1_InternalAsn1())) {s = 42;}

                        else if ( (LA79_5==70) && (synpred1_InternalAsn1())) {s = 43;}

                        else if ( (LA79_5==71) && (synpred1_InternalAsn1())) {s = 44;}

                        else if ( (LA79_5==36) && (synpred1_InternalAsn1())) {s = 45;}

                        else if ( (LA79_5==31) && (synpred1_InternalAsn1())) {s = 46;}

                        else if ( (LA79_5==46) && (synpred1_InternalAsn1())) {s = 47;}

                        else if ( (LA79_5==65) && (synpred1_InternalAsn1())) {s = 48;}

                        else if ( (LA79_5==44) && (synpred1_InternalAsn1())) {s = 49;}

                        else if ( (LA79_5==38) && (synpred1_InternalAsn1())) {s = 50;}

                        else if ( (LA79_5==67) && (synpred1_InternalAsn1())) {s = 51;}

                        else if ( (LA79_5==69) && (synpred1_InternalAsn1())) {s = 52;}

                        else if ( (LA79_5==59) && (synpred1_InternalAsn1())) {s = 53;}

                        else if ( (LA79_5==47) && (synpred1_InternalAsn1())) {s = 54;}

                        else if ( (LA79_5==58) && (synpred1_InternalAsn1())) {s = 55;}

                        else if ( (LA79_5==60) && (synpred1_InternalAsn1())) {s = 56;}

                        else if ( (LA79_5==85) && (synpred1_InternalAsn1())) {s = 57;}

                        else if ( (LA79_5==86) && (synpred1_InternalAsn1())) {s = 58;}

                        else if ( (LA79_5==87) && (synpred1_InternalAsn1())) {s = 59;}

                        else if ( (LA79_5==35) && (synpred1_InternalAsn1())) {s = 60;}

                        else if ( (LA79_5==EOF) && (synpred1_InternalAsn1())) {s = 61;}

                         
                        input.seek(index79_5);
                        if ( s>=0 ) return s;
                        break;
                    case 1 : 
                        int LA79_11 = input.LA(1);

                         
                        int index79_11 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((LA79_11>=94 && LA79_11<=95)) ) {s = 15;}

                        else if ( (LA79_11==92) && (synpred1_InternalAsn1())) {s = 19;}

                        else if ( (LA79_11==90) && (synpred1_InternalAsn1())) {s = 20;}

                        else if ( (LA79_11==91) && (synpred1_InternalAsn1())) {s = 21;}

                        else if ( (LA79_11==88) && (synpred1_InternalAsn1())) {s = 22;}

                        else if ( (LA79_11==89) && (synpred1_InternalAsn1())) {s = 23;}

                        else if ( (LA79_11==25) && (synpred1_InternalAsn1())) {s = 24;}

                        else if ( (LA79_11==RULE_LONG) && (synpred1_InternalAsn1())) {s = 25;}

                        else if ( (LA79_11==RULE_ID) && (synpred1_InternalAsn1())) {s = 26;}

                        else if ( (LA79_11==42) && (synpred1_InternalAsn1())) {s = 27;}

                        else if ( (LA79_11==30) && (synpred1_InternalAsn1())) {s = 28;}

                        else if ( (LA79_11==72) && (synpred1_InternalAsn1())) {s = 29;}

                        else if ( (LA79_11==73) && (synpred1_InternalAsn1())) {s = 30;}

                        else if ( (LA79_11==74) && (synpred1_InternalAsn1())) {s = 31;}

                        else if ( (LA79_11==75) && (synpred1_InternalAsn1())) {s = 32;}

                        else if ( (LA79_11==76) && (synpred1_InternalAsn1())) {s = 33;}

                        else if ( (LA79_11==77) && (synpred1_InternalAsn1())) {s = 34;}

                        else if ( (LA79_11==78) && (synpred1_InternalAsn1())) {s = 35;}

                        else if ( (LA79_11==79) && (synpred1_InternalAsn1())) {s = 36;}

                        else if ( (LA79_11==80) && (synpred1_InternalAsn1())) {s = 37;}

                        else if ( (LA79_11==81) && (synpred1_InternalAsn1())) {s = 38;}

                        else if ( (LA79_11==82) && (synpred1_InternalAsn1())) {s = 39;}

                        else if ( (LA79_11==83) && (synpred1_InternalAsn1())) {s = 40;}

                        else if ( (LA79_11==84) && (synpred1_InternalAsn1())) {s = 41;}

                        else if ( (LA79_11==68) && (synpred1_InternalAsn1())) {s = 42;}

                        else if ( (LA79_11==70) && (synpred1_InternalAsn1())) {s = 43;}

                        else if ( (LA79_11==71) && (synpred1_InternalAsn1())) {s = 44;}

                        else if ( (LA79_11==36) && (synpred1_InternalAsn1())) {s = 45;}

                        else if ( (LA79_11==31) && (synpred1_InternalAsn1())) {s = 46;}

                        else if ( (LA79_11==46) && (synpred1_InternalAsn1())) {s = 47;}

                        else if ( (LA79_11==65) && (synpred1_InternalAsn1())) {s = 48;}

                        else if ( (LA79_11==44) && (synpred1_InternalAsn1())) {s = 49;}

                        else if ( (LA79_11==38) && (synpred1_InternalAsn1())) {s = 50;}

                        else if ( (LA79_11==67) && (synpred1_InternalAsn1())) {s = 51;}

                        else if ( (LA79_11==69) && (synpred1_InternalAsn1())) {s = 52;}

                        else if ( (LA79_11==59) && (synpred1_InternalAsn1())) {s = 53;}

                        else if ( (LA79_11==47) && (synpred1_InternalAsn1())) {s = 54;}

                        else if ( (LA79_11==58) && (synpred1_InternalAsn1())) {s = 55;}

                        else if ( (LA79_11==60) && (synpred1_InternalAsn1())) {s = 56;}

                        else if ( (LA79_11==85) && (synpred1_InternalAsn1())) {s = 57;}

                        else if ( (LA79_11==86) && (synpred1_InternalAsn1())) {s = 58;}

                        else if ( (LA79_11==87) && (synpred1_InternalAsn1())) {s = 59;}

                        else if ( (LA79_11==35) && (synpred1_InternalAsn1())) {s = 60;}

                        else if ( (LA79_11==EOF) && (synpred1_InternalAsn1())) {s = 61;}

                         
                        input.seek(index79_11);
                        if ( s>=0 ) return s;
                        break;
                    case 2 : 
                        int LA79_10 = input.LA(1);

                         
                        int index79_10 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((LA79_10>=94 && LA79_10<=95)) ) {s = 15;}

                        else if ( (LA79_10==92) && (synpred1_InternalAsn1())) {s = 19;}

                        else if ( (LA79_10==90) && (synpred1_InternalAsn1())) {s = 20;}

                        else if ( (LA79_10==91) && (synpred1_InternalAsn1())) {s = 21;}

                        else if ( (LA79_10==88) && (synpred1_InternalAsn1())) {s = 22;}

                        else if ( (LA79_10==89) && (synpred1_InternalAsn1())) {s = 23;}

                        else if ( (LA79_10==25) && (synpred1_InternalAsn1())) {s = 24;}

                        else if ( (LA79_10==RULE_LONG) && (synpred1_InternalAsn1())) {s = 25;}

                        else if ( (LA79_10==RULE_ID) && (synpred1_InternalAsn1())) {s = 26;}

                        else if ( (LA79_10==42) && (synpred1_InternalAsn1())) {s = 27;}

                        else if ( (LA79_10==30) && (synpred1_InternalAsn1())) {s = 28;}

                        else if ( (LA79_10==72) && (synpred1_InternalAsn1())) {s = 29;}

                        else if ( (LA79_10==73) && (synpred1_InternalAsn1())) {s = 30;}

                        else if ( (LA79_10==74) && (synpred1_InternalAsn1())) {s = 31;}

                        else if ( (LA79_10==75) && (synpred1_InternalAsn1())) {s = 32;}

                        else if ( (LA79_10==76) && (synpred1_InternalAsn1())) {s = 33;}

                        else if ( (LA79_10==77) && (synpred1_InternalAsn1())) {s = 34;}

                        else if ( (LA79_10==78) && (synpred1_InternalAsn1())) {s = 35;}

                        else if ( (LA79_10==79) && (synpred1_InternalAsn1())) {s = 36;}

                        else if ( (LA79_10==80) && (synpred1_InternalAsn1())) {s = 37;}

                        else if ( (LA79_10==81) && (synpred1_InternalAsn1())) {s = 38;}

                        else if ( (LA79_10==82) && (synpred1_InternalAsn1())) {s = 39;}

                        else if ( (LA79_10==83) && (synpred1_InternalAsn1())) {s = 40;}

                        else if ( (LA79_10==84) && (synpred1_InternalAsn1())) {s = 41;}

                        else if ( (LA79_10==68) && (synpred1_InternalAsn1())) {s = 42;}

                        else if ( (LA79_10==70) && (synpred1_InternalAsn1())) {s = 43;}

                        else if ( (LA79_10==71) && (synpred1_InternalAsn1())) {s = 44;}

                        else if ( (LA79_10==36) && (synpred1_InternalAsn1())) {s = 45;}

                        else if ( (LA79_10==31) && (synpred1_InternalAsn1())) {s = 46;}

                        else if ( (LA79_10==46) && (synpred1_InternalAsn1())) {s = 47;}

                        else if ( (LA79_10==65) && (synpred1_InternalAsn1())) {s = 48;}

                        else if ( (LA79_10==44) && (synpred1_InternalAsn1())) {s = 49;}

                        else if ( (LA79_10==38) && (synpred1_InternalAsn1())) {s = 50;}

                        else if ( (LA79_10==67) && (synpred1_InternalAsn1())) {s = 51;}

                        else if ( (LA79_10==69) && (synpred1_InternalAsn1())) {s = 52;}

                        else if ( (LA79_10==59) && (synpred1_InternalAsn1())) {s = 53;}

                        else if ( (LA79_10==47) && (synpred1_InternalAsn1())) {s = 54;}

                        else if ( (LA79_10==58) && (synpred1_InternalAsn1())) {s = 55;}

                        else if ( (LA79_10==60) && (synpred1_InternalAsn1())) {s = 56;}

                        else if ( (LA79_10==85) && (synpred1_InternalAsn1())) {s = 57;}

                        else if ( (LA79_10==86) && (synpred1_InternalAsn1())) {s = 58;}

                        else if ( (LA79_10==87) && (synpred1_InternalAsn1())) {s = 59;}

                        else if ( (LA79_10==35) && (synpred1_InternalAsn1())) {s = 60;}

                        else if ( (LA79_10==EOF) && (synpred1_InternalAsn1())) {s = 61;}

                         
                        input.seek(index79_10);
                        if ( s>=0 ) return s;
                        break;
                    case 3 : 
                        int LA79_3 = input.LA(1);

                         
                        int index79_3 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA79_3==92) && (synpred1_InternalAsn1())) {s = 19;}

                        else if ( (LA79_3==90) && (synpred1_InternalAsn1())) {s = 20;}

                        else if ( (LA79_3==91) && (synpred1_InternalAsn1())) {s = 21;}

                        else if ( (LA79_3==88) && (synpred1_InternalAsn1())) {s = 22;}

                        else if ( (LA79_3==89) && (synpred1_InternalAsn1())) {s = 23;}

                        else if ( (LA79_3==25) && (synpred1_InternalAsn1())) {s = 24;}

                        else if ( (LA79_3==RULE_LONG) && (synpred1_InternalAsn1())) {s = 25;}

                        else if ( (LA79_3==RULE_ID) && (synpred1_InternalAsn1())) {s = 26;}

                        else if ( (LA79_3==42) && (synpred1_InternalAsn1())) {s = 27;}

                        else if ( (LA79_3==30) && (synpred1_InternalAsn1())) {s = 28;}

                        else if ( (LA79_3==72) && (synpred1_InternalAsn1())) {s = 29;}

                        else if ( (LA79_3==73) && (synpred1_InternalAsn1())) {s = 30;}

                        else if ( (LA79_3==74) && (synpred1_InternalAsn1())) {s = 31;}

                        else if ( (LA79_3==75) && (synpred1_InternalAsn1())) {s = 32;}

                        else if ( (LA79_3==76) && (synpred1_InternalAsn1())) {s = 33;}

                        else if ( (LA79_3==77) && (synpred1_InternalAsn1())) {s = 34;}

                        else if ( (LA79_3==78) && (synpred1_InternalAsn1())) {s = 35;}

                        else if ( (LA79_3==79) && (synpred1_InternalAsn1())) {s = 36;}

                        else if ( (LA79_3==80) && (synpred1_InternalAsn1())) {s = 37;}

                        else if ( (LA79_3==81) && (synpred1_InternalAsn1())) {s = 38;}

                        else if ( (LA79_3==82) && (synpred1_InternalAsn1())) {s = 39;}

                        else if ( (LA79_3==83) && (synpred1_InternalAsn1())) {s = 40;}

                        else if ( (LA79_3==84) && (synpred1_InternalAsn1())) {s = 41;}

                        else if ( (LA79_3==68) && (synpred1_InternalAsn1())) {s = 42;}

                        else if ( (LA79_3==70) && (synpred1_InternalAsn1())) {s = 43;}

                        else if ( (LA79_3==71) && (synpred1_InternalAsn1())) {s = 44;}

                        else if ( (LA79_3==36) && (synpred1_InternalAsn1())) {s = 45;}

                        else if ( (LA79_3==31) && (synpred1_InternalAsn1())) {s = 46;}

                        else if ( (LA79_3==46) && (synpred1_InternalAsn1())) {s = 47;}

                        else if ( (LA79_3==65) && (synpred1_InternalAsn1())) {s = 48;}

                        else if ( (LA79_3==44) && (synpred1_InternalAsn1())) {s = 49;}

                        else if ( (LA79_3==38) && (synpred1_InternalAsn1())) {s = 50;}

                        else if ( (LA79_3==67) && (synpred1_InternalAsn1())) {s = 51;}

                        else if ( (LA79_3==69) && (synpred1_InternalAsn1())) {s = 52;}

                        else if ( (LA79_3==59) && (synpred1_InternalAsn1())) {s = 53;}

                        else if ( (LA79_3==47) && (synpred1_InternalAsn1())) {s = 54;}

                        else if ( (LA79_3==58) && (synpred1_InternalAsn1())) {s = 55;}

                        else if ( (LA79_3==60) && (synpred1_InternalAsn1())) {s = 56;}

                        else if ( (LA79_3==85) && (synpred1_InternalAsn1())) {s = 57;}

                        else if ( (LA79_3==86) && (synpred1_InternalAsn1())) {s = 58;}

                        else if ( (LA79_3==87) && (synpred1_InternalAsn1())) {s = 59;}

                        else if ( (LA79_3==35) && (synpred1_InternalAsn1())) {s = 60;}

                        else if ( (LA79_3==EOF) && (synpred1_InternalAsn1())) {s = 61;}

                        else if ( ((LA79_3>=94 && LA79_3<=95)) ) {s = 15;}

                         
                        input.seek(index79_3);
                        if ( s>=0 ) return s;
                        break;
                    case 4 : 
                        int LA79_12 = input.LA(1);

                         
                        int index79_12 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA79_12==92) && (synpred1_InternalAsn1())) {s = 19;}

                        else if ( (LA79_12==90) && (synpred1_InternalAsn1())) {s = 20;}

                        else if ( (LA79_12==91) && (synpred1_InternalAsn1())) {s = 21;}

                        else if ( (LA79_12==88) && (synpred1_InternalAsn1())) {s = 22;}

                        else if ( (LA79_12==89) && (synpred1_InternalAsn1())) {s = 23;}

                        else if ( (LA79_12==25) && (synpred1_InternalAsn1())) {s = 24;}

                        else if ( (LA79_12==RULE_LONG) && (synpred1_InternalAsn1())) {s = 25;}

                        else if ( (LA79_12==RULE_ID) && (synpred1_InternalAsn1())) {s = 26;}

                        else if ( (LA79_12==42) && (synpred1_InternalAsn1())) {s = 27;}

                        else if ( (LA79_12==30) && (synpred1_InternalAsn1())) {s = 28;}

                        else if ( (LA79_12==72) && (synpred1_InternalAsn1())) {s = 29;}

                        else if ( (LA79_12==73) && (synpred1_InternalAsn1())) {s = 30;}

                        else if ( (LA79_12==74) && (synpred1_InternalAsn1())) {s = 31;}

                        else if ( (LA79_12==75) && (synpred1_InternalAsn1())) {s = 32;}

                        else if ( (LA79_12==76) && (synpred1_InternalAsn1())) {s = 33;}

                        else if ( (LA79_12==77) && (synpred1_InternalAsn1())) {s = 34;}

                        else if ( (LA79_12==78) && (synpred1_InternalAsn1())) {s = 35;}

                        else if ( (LA79_12==79) && (synpred1_InternalAsn1())) {s = 36;}

                        else if ( (LA79_12==80) && (synpred1_InternalAsn1())) {s = 37;}

                        else if ( (LA79_12==81) && (synpred1_InternalAsn1())) {s = 38;}

                        else if ( (LA79_12==82) && (synpred1_InternalAsn1())) {s = 39;}

                        else if ( (LA79_12==83) && (synpred1_InternalAsn1())) {s = 40;}

                        else if ( (LA79_12==84) && (synpred1_InternalAsn1())) {s = 41;}

                        else if ( (LA79_12==68) && (synpred1_InternalAsn1())) {s = 42;}

                        else if ( (LA79_12==70) && (synpred1_InternalAsn1())) {s = 43;}

                        else if ( (LA79_12==71) && (synpred1_InternalAsn1())) {s = 44;}

                        else if ( (LA79_12==36) && (synpred1_InternalAsn1())) {s = 45;}

                        else if ( (LA79_12==31) && (synpred1_InternalAsn1())) {s = 46;}

                        else if ( (LA79_12==46) && (synpred1_InternalAsn1())) {s = 47;}

                        else if ( (LA79_12==65) && (synpred1_InternalAsn1())) {s = 48;}

                        else if ( (LA79_12==44) && (synpred1_InternalAsn1())) {s = 49;}

                        else if ( (LA79_12==38) && (synpred1_InternalAsn1())) {s = 50;}

                        else if ( (LA79_12==67) && (synpred1_InternalAsn1())) {s = 51;}

                        else if ( (LA79_12==69) && (synpred1_InternalAsn1())) {s = 52;}

                        else if ( (LA79_12==59) && (synpred1_InternalAsn1())) {s = 53;}

                        else if ( (LA79_12==47) && (synpred1_InternalAsn1())) {s = 54;}

                        else if ( (LA79_12==58) && (synpred1_InternalAsn1())) {s = 55;}

                        else if ( (LA79_12==60) && (synpred1_InternalAsn1())) {s = 56;}

                        else if ( (LA79_12==85) && (synpred1_InternalAsn1())) {s = 57;}

                        else if ( (LA79_12==86) && (synpred1_InternalAsn1())) {s = 58;}

                        else if ( (LA79_12==87) && (synpred1_InternalAsn1())) {s = 59;}

                        else if ( (LA79_12==35) && (synpred1_InternalAsn1())) {s = 60;}

                        else if ( (LA79_12==EOF) && (synpred1_InternalAsn1())) {s = 61;}

                        else if ( ((LA79_12>=94 && LA79_12<=95)) ) {s = 15;}

                         
                        input.seek(index79_12);
                        if ( s>=0 ) return s;
                        break;
                    case 5 : 
                        int LA79_13 = input.LA(1);

                         
                        int index79_13 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (synpred1_InternalAsn1()) ) {s = 61;}

                        else if ( (true) ) {s = 18;}

                         
                        input.seek(index79_13);
                        if ( s>=0 ) return s;
                        break;
                    case 6 : 
                        int LA79_75 = input.LA(1);

                         
                        int index79_75 = input.index();
                        input.rewind();
                        s = -1;
                        if ( ((LA79_75>=94 && LA79_75<=95)) ) {s = 15;}

                        else if ( (LA79_75==92) && (synpred1_InternalAsn1())) {s = 19;}

                        else if ( (LA79_75==90) && (synpred1_InternalAsn1())) {s = 20;}

                        else if ( (LA79_75==91) && (synpred1_InternalAsn1())) {s = 21;}

                        else if ( (LA79_75==88) && (synpred1_InternalAsn1())) {s = 22;}

                        else if ( (LA79_75==89) && (synpred1_InternalAsn1())) {s = 23;}

                        else if ( (LA79_75==25) && (synpred1_InternalAsn1())) {s = 24;}

                        else if ( (LA79_75==RULE_LONG) && (synpred1_InternalAsn1())) {s = 25;}

                        else if ( (LA79_75==RULE_ID) && (synpred1_InternalAsn1())) {s = 26;}

                        else if ( (LA79_75==42) && (synpred1_InternalAsn1())) {s = 27;}

                        else if ( (LA79_75==30) && (synpred1_InternalAsn1())) {s = 28;}

                        else if ( (LA79_75==72) && (synpred1_InternalAsn1())) {s = 29;}

                        else if ( (LA79_75==73) && (synpred1_InternalAsn1())) {s = 30;}

                        else if ( (LA79_75==74) && (synpred1_InternalAsn1())) {s = 31;}

                        else if ( (LA79_75==75) && (synpred1_InternalAsn1())) {s = 32;}

                        else if ( (LA79_75==76) && (synpred1_InternalAsn1())) {s = 33;}

                        else if ( (LA79_75==77) && (synpred1_InternalAsn1())) {s = 34;}

                        else if ( (LA79_75==78) && (synpred1_InternalAsn1())) {s = 35;}

                        else if ( (LA79_75==79) && (synpred1_InternalAsn1())) {s = 36;}

                        else if ( (LA79_75==80) && (synpred1_InternalAsn1())) {s = 37;}

                        else if ( (LA79_75==81) && (synpred1_InternalAsn1())) {s = 38;}

                        else if ( (LA79_75==82) && (synpred1_InternalAsn1())) {s = 39;}

                        else if ( (LA79_75==83) && (synpred1_InternalAsn1())) {s = 40;}

                        else if ( (LA79_75==84) && (synpred1_InternalAsn1())) {s = 41;}

                        else if ( (LA79_75==68) && (synpred1_InternalAsn1())) {s = 42;}

                        else if ( (LA79_75==70) && (synpred1_InternalAsn1())) {s = 43;}

                        else if ( (LA79_75==71) && (synpred1_InternalAsn1())) {s = 44;}

                        else if ( (LA79_75==36) && (synpred1_InternalAsn1())) {s = 45;}

                        else if ( (LA79_75==31) && (synpred1_InternalAsn1())) {s = 46;}

                        else if ( (LA79_75==46) && (synpred1_InternalAsn1())) {s = 47;}

                        else if ( (LA79_75==65) && (synpred1_InternalAsn1())) {s = 48;}

                        else if ( (LA79_75==44) && (synpred1_InternalAsn1())) {s = 49;}

                        else if ( (LA79_75==38) && (synpred1_InternalAsn1())) {s = 50;}

                        else if ( (LA79_75==67) && (synpred1_InternalAsn1())) {s = 51;}

                        else if ( (LA79_75==69) && (synpred1_InternalAsn1())) {s = 52;}

                        else if ( (LA79_75==59) && (synpred1_InternalAsn1())) {s = 53;}

                        else if ( (LA79_75==47) && (synpred1_InternalAsn1())) {s = 54;}

                        else if ( (LA79_75==58) && (synpred1_InternalAsn1())) {s = 55;}

                        else if ( (LA79_75==60) && (synpred1_InternalAsn1())) {s = 56;}

                        else if ( (LA79_75==85) && (synpred1_InternalAsn1())) {s = 57;}

                        else if ( (LA79_75==86) && (synpred1_InternalAsn1())) {s = 58;}

                        else if ( (LA79_75==87) && (synpred1_InternalAsn1())) {s = 59;}

                        else if ( (LA79_75==35) && (synpred1_InternalAsn1())) {s = 60;}

                        else if ( (LA79_75==EOF) && (synpred1_InternalAsn1())) {s = 61;}

                         
                        input.seek(index79_75);
                        if ( s>=0 ) return s;
                        break;
                    case 7 : 
                        int LA79_0 = input.LA(1);

                         
                        int index79_0 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA79_0==104) && (synpred1_InternalAsn1())) {s = 1;}

                        else if ( (LA79_0==105) && (synpred1_InternalAsn1())) {s = 2;}

                        else if ( (LA79_0==RULE_STRING) ) {s = 3;}

                        else if ( (LA79_0==99) ) {s = 4;}

                        else if ( (LA79_0==RULE_LONG) ) {s = 5;}

                        else if ( (LA79_0==RULE_B_STRING) && (synpred1_InternalAsn1())) {s = 6;}

                        else if ( (LA79_0==RULE_H_STRING) && (synpred1_InternalAsn1())) {s = 7;}

                        else if ( (LA79_0==45) && (synpred1_InternalAsn1())) {s = 8;}

                        else if ( (LA79_0==32) ) {s = 9;}

                        else if ( (LA79_0==101) ) {s = 10;}

                        else if ( (LA79_0==102) ) {s = 11;}

                        else if ( (LA79_0==103) ) {s = 12;}

                        else if ( (LA79_0==RULE_ID) ) {s = 13;}

                        else if ( (LA79_0==93) ) {s = 14;}

                        else if ( (LA79_0==96) ) {s = 15;}

                        else if ( (LA79_0==29) ) {s = 16;}

                        else if ( (LA79_0==98) ) {s = 17;}

                        else if ( ((LA79_0>=30 && LA79_0<=31)||LA79_0==36||LA79_0==38||LA79_0==42||LA79_0==44||(LA79_0>=46 && LA79_0<=47)||(LA79_0>=58 && LA79_0<=60)||LA79_0==65||(LA79_0>=67 && LA79_0<=87)) ) {s = 18;}

                         
                        input.seek(index79_0);
                        if ( s>=0 ) return s;
                        break;
                    case 8 : 
                        int LA79_64 = input.LA(1);

                         
                        int index79_64 = input.index();
                        input.rewind();
                        s = -1;
                        if ( (LA79_64==92) && (synpred1_InternalAsn1())) {s = 19;}

                        else if ( (LA79_64==90) && (synpred1_InternalAsn1())) {s = 20;}

                        else if ( (LA79_64==91) && (synpred1_InternalAsn1())) {s = 21;}

                        else if ( (LA79_64==88) && (synpred1_InternalAsn1())) {s = 22;}

                        else if ( (LA79_64==89) && (synpred1_InternalAsn1())) {s = 23;}

                        else if ( (LA79_64==25) && (synpred1_InternalAsn1())) {s = 24;}

                        else if ( (LA79_64==RULE_LONG) && (synpred1_InternalAsn1())) {s = 25;}

                        else if ( (LA79_64==RULE_ID) && (synpred1_InternalAsn1())) {s = 26;}

                        else if ( (LA79_64==42) && (synpred1_InternalAsn1())) {s = 27;}

                        else if ( (LA79_64==30) && (synpred1_InternalAsn1())) {s = 28;}

                        else if ( (LA79_64==72) && (synpred1_InternalAsn1())) {s = 29;}

                        else if ( (LA79_64==73) && (synpred1_InternalAsn1())) {s = 30;}

                        else if ( (LA79_64==74) && (synpred1_InternalAsn1())) {s = 31;}

                        else if ( (LA79_64==75) && (synpred1_InternalAsn1())) {s = 32;}

                        else if ( (LA79_64==76) && (synpred1_InternalAsn1())) {s = 33;}

                        else if ( (LA79_64==77) && (synpred1_InternalAsn1())) {s = 34;}

                        else if ( (LA79_64==78) && (synpred1_InternalAsn1())) {s = 35;}

                        else if ( (LA79_64==79) && (synpred1_InternalAsn1())) {s = 36;}

                        else if ( (LA79_64==80) && (synpred1_InternalAsn1())) {s = 37;}

                        else if ( (LA79_64==81) && (synpred1_InternalAsn1())) {s = 38;}

                        else if ( (LA79_64==82) && (synpred1_InternalAsn1())) {s = 39;}

                        else if ( (LA79_64==83) && (synpred1_InternalAsn1())) {s = 40;}

                        else if ( (LA79_64==84) && (synpred1_InternalAsn1())) {s = 41;}

                        else if ( (LA79_64==68) && (synpred1_InternalAsn1())) {s = 42;}

                        else if ( (LA79_64==70) && (synpred1_InternalAsn1())) {s = 43;}

                        else if ( (LA79_64==71) && (synpred1_InternalAsn1())) {s = 44;}

                        else if ( (LA79_64==36) && (synpred1_InternalAsn1())) {s = 45;}

                        else if ( (LA79_64==31) && (synpred1_InternalAsn1())) {s = 46;}

                        else if ( (LA79_64==46) && (synpred1_InternalAsn1())) {s = 47;}

                        else if ( (LA79_64==65) && (synpred1_InternalAsn1())) {s = 48;}

                        else if ( (LA79_64==44) && (synpred1_InternalAsn1())) {s = 49;}

                        else if ( (LA79_64==38) && (synpred1_InternalAsn1())) {s = 50;}

                        else if ( (LA79_64==67) && (synpred1_InternalAsn1())) {s = 51;}

                        else if ( (LA79_64==69) && (synpred1_InternalAsn1())) {s = 52;}

                        else if ( (LA79_64==59) && (synpred1_InternalAsn1())) {s = 53;}

                        else if ( (LA79_64==47) && (synpred1_InternalAsn1())) {s = 54;}

                        else if ( (LA79_64==58) && (synpred1_InternalAsn1())) {s = 55;}

                        else if ( (LA79_64==60) && (synpred1_InternalAsn1())) {s = 56;}

                        else if ( (LA79_64==85) && (synpred1_InternalAsn1())) {s = 57;}

                        else if ( (LA79_64==86) && (synpred1_InternalAsn1())) {s = 58;}

                        else if ( (LA79_64==87) && (synpred1_InternalAsn1())) {s = 59;}

                        else if ( (LA79_64==35) && (synpred1_InternalAsn1())) {s = 60;}

                        else if ( (LA79_64==EOF) && (synpred1_InternalAsn1())) {s = 61;}

                        else if ( ((LA79_64>=94 && LA79_64<=95)) ) {s = 15;}

                         
                        input.seek(index79_64);
                        if ( s>=0 ) return s;
                        break;
            }
            if (state.backtracking>0) {state.failed=true; return -1;}
            NoViableAltException nvae =
                new NoViableAltException(getDescription(), 79, _s, input);
            error(nvae);
            throw nvae;
        }
    }
 

    public static final BitSet FOLLOW_ruleAsn1_in_entryRuleAsn175 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAsn185 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleModuleDefinition_in_ruleAsn1130 = new BitSet(new long[]{0x0000000000000012L});
    public static final BitSet FOLLOW_ruleModuleDefinition_in_entryRuleModuleDefinition166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModuleDefinition176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleModuleIdentifier_in_ruleModuleDefinition222 = new BitSet(new long[]{0x0000000000004000L});
    public static final BitSet FOLLOW_14_in_ruleModuleDefinition234 = new BitSet(new long[]{0x0000000000B88010L});
    public static final BitSet FOLLOW_ruleEncodingReferenceDefault_in_ruleModuleDefinition255 = new BitSet(new long[]{0x0000000000B88000L});
    public static final BitSet FOLLOW_ruleTagDefault_in_ruleModuleDefinition277 = new BitSet(new long[]{0x0000000000808000L});
    public static final BitSet FOLLOW_ruleExtensionDefault_in_ruleModuleDefinition299 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleModuleDefinition312 = new BitSet(new long[]{0x0000000000010000L});
    public static final BitSet FOLLOW_16_in_ruleModuleDefinition324 = new BitSet(new long[]{0x0000000011020010L});
    public static final BitSet FOLLOW_ruleModuleBody_in_ruleModuleDefinition345 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleModuleDefinition358 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleModuleIdentifier_in_entryRuleModuleIdentifier394 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModuleIdentifier404 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleModuleIdentifier445 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEncodingReferenceDefault_in_entryRuleEncodingReferenceDefault485 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEncodingReferenceDefault495 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEncodingReferenceDefault537 = new BitSet(new long[]{0x0000000000040000L});
    public static final BitSet FOLLOW_18_in_ruleEncodingReferenceDefault554 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTagDefault_in_entryRuleTagDefault591 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTagDefault602 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleTagDefault641 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_20_in_ruleTagDefault660 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_21_in_ruleTagDefault679 = new BitSet(new long[]{0x0000000000400000L});
    public static final BitSet FOLLOW_22_in_ruleTagDefault693 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionDefault_in_entryRuleExtensionDefault734 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionDefault745 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_23_in_ruleExtensionDefault782 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleModuleBody_in_entryRuleModuleBody821 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModuleBody831 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExports_in_ruleModuleBody877 = new BitSet(new long[]{0x0000000011000010L});
    public static final BitSet FOLLOW_ruleImports_in_ruleModuleBody899 = new BitSet(new long[]{0x0000000011000010L});
    public static final BitSet FOLLOW_ruleAssignment_in_ruleModuleBody921 = new BitSet(new long[]{0x0000000011000012L});
    public static final BitSet FOLLOW_ruleExports_in_entryRuleExports958 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExports968 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleExports1014 = new BitSet(new long[]{0x0000000004000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleExports1036 = new BitSet(new long[]{0x000000000A000000L});
    public static final BitSet FOLLOW_25_in_ruleExports1049 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleExports1069 = new BitSet(new long[]{0x000000000A000000L});
    public static final BitSet FOLLOW_26_in_ruleExports1090 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleExports1103 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleImports_in_entryRuleImports1139 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleImports1149 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_28_in_ruleImports1186 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleImports1206 = new BitSet(new long[]{0x0000000022000000L});
    public static final BitSet FOLLOW_25_in_ruleImports1219 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleImports1239 = new BitSet(new long[]{0x0000000022000000L});
    public static final BitSet FOLLOW_29_in_ruleImports1253 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleImports1270 = new BitSet(new long[]{0x0000000008000000L});
    public static final BitSet FOLLOW_27_in_ruleImports1287 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinedType_in_entryRuleDefinedType1323 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDefinedType1333 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDefinedType1377 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinedValue_in_entryRuleDefinedValue1412 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDefinedValue1422 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleDefinedValue1466 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAssignment_in_entryRuleAssignment1501 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAssignment1511 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeAssignment_in_ruleAssignment1558 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValueAssignment_in_ruleAssignment1585 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeAssignment_in_entryRuleTypeAssignment1620 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeAssignment1630 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTypeAssignment1672 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleTypeAssignment1689 = new BitSet(new long[]{0x1C00D450C0000010L,0x0000000000FFFFFAL});
    public static final BitSet FOLLOW_ruleType_in_ruleTypeAssignment1710 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_ruleConstraint_in_ruleTypeAssignment1731 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValueAssignment_in_entryRuleValueAssignment1768 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValueAssignment1778 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleValueAssignment_in_ruleValueAssignment1825 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceValueAssignment_in_ruleValueAssignment1852 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleObjectIdentifierValueAssignment_in_ruleValueAssignment1879 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSequenceValueAssignment_in_ruleValueAssignment1906 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleValueAssignment_in_entryRuleSimpleValueAssignment1941 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimpleValueAssignment1951 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSimpleValueAssignment1993 = new BitSet(new long[]{0x00005450C0000000L,0x00000000001FFFFAL});
    public static final BitSet FOLLOW_ruleSimpleType_in_ruleSimpleValueAssignment2019 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleSimpleValueAssignment2031 = new BitSet(new long[]{0x00002001000001E0L,0x000003E800000000L});
    public static final BitSet FOLLOW_ruleSimpleValue_in_ruleSimpleValueAssignment2052 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceValueAssignment_in_entryRuleChoiceValueAssignment2088 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChoiceValueAssignment2098 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleChoiceValueAssignment2140 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleChoiceValueAssignment2165 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleChoiceValueAssignment2177 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleChoiceValue_in_ruleChoiceValueAssignment2198 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleObjectIdentifierValueAssignment_in_entryRuleObjectIdentifierValueAssignment2234 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleObjectIdentifierValueAssignment2244 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleObjectIdentifierValueAssignment2286 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000002L});
    public static final BitSet FOLLOW_ruleObjectIdentifierType_in_ruleObjectIdentifierValueAssignment2312 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleObjectIdentifierValueAssignment2324 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_ruleObjectIdentifierValue_in_ruleObjectIdentifierValueAssignment2345 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSequenceValueAssignment_in_entryRuleSequenceValueAssignment2381 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSequenceValueAssignment2391 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSequenceValueAssignment2433 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSequenceValueAssignment2458 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleSequenceValueAssignment2470 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_ruleSequenceValue_in_ruleSequenceValueAssignment2491 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType2527 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType2537 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBuiltinType_in_ruleType2584 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReferencedType_in_ruleType2611 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBuiltinType_in_entryRuleBuiltinType2646 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBuiltinType2656 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleType_in_ruleBuiltinType2703 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainerType_in_ruleBuiltinType2730 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrefixedType_in_ruleBuiltinType2757 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleType_in_entryRuleSimpleType2792 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimpleType2802 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBitStringType_in_ruleSimpleType2849 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanType_in_ruleSimpleType2876 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCharacterStringType_in_ruleSimpleType2903 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDateType_in_ruleSimpleType2930 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDateTimeType_in_ruleSimpleType2957 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDurationType_in_ruleSimpleType2984 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumeratedType_in_ruleSimpleType3011 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerType_in_ruleSimpleType3038 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNullType_in_ruleSimpleType3065 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleObjectIdentifierType_in_ruleSimpleType3092 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOctetStringType_in_ruleSimpleType3119 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealType_in_ruleSimpleType3146 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTimeType_in_ruleSimpleType3173 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTimeOfDayType_in_ruleSimpleType3200 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainerType_in_entryRuleContainerType3235 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContainerType3245 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceType_in_ruleContainerType3292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSequenceType_in_ruleContainerType3319 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSequenceOfType_in_ruleContainerType3346 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSetType_in_ruleContainerType3373 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSetOfType_in_ruleContainerType3400 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReferencedType_in_entryRuleReferencedType3435 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReferencedType3445 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinedType_in_ruleReferencedType3492 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUsefulType_in_ruleReferencedType3519 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedType_in_entryRuleNamedType3554 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamedType3564 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNamedType3606 = new BitSet(new long[]{0x1C00D450C0000010L,0x0000000000FFFFFAL});
    public static final BitSet FOLLOW_ruleType_in_ruleNamedType3632 = new BitSet(new long[]{0x0000000400000002L});
    public static final BitSet FOLLOW_ruleConstraint_in_ruleNamedType3653 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValue_in_entryRuleValue3690 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValue3700 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBuiltinValue_in_ruleValue3747 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReferencedValue_in_ruleValue3774 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBuiltinValue_in_entryRuleBuiltinValue3809 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBuiltinValue3819 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleValue_in_ruleBuiltinValue3866 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainerValue_in_ruleBuiltinValue3893 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSimpleValue_in_entryRuleSimpleValue3928 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSimpleValue3938 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanValue_in_ruleSimpleValue3985 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCharacterStringValue_in_ruleSimpleValue4012 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerValue_in_ruleSimpleValue4039 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOctetStringValue_in_ruleSimpleValue4066 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealValue_in_ruleSimpleValue4093 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainerValue_in_entryRuleContainerValue4128 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContainerValue4138 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceValue_in_ruleContainerValue4184 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleReferencedValue_in_entryRuleReferencedValue4218 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleReferencedValue4228 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinedValue_in_ruleReferencedValue4274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedValue_in_entryRuleNamedValue4308 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamedValue4318 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNamedValue4360 = new BitSet(new long[]{0x00002001000001F0L,0x000003E800000000L});
    public static final BitSet FOLLOW_ruleValue_in_ruleNamedValue4386 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanType_in_entryRuleBooleanType4422 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBooleanType4432 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_30_in_ruleBooleanType4478 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBooleanValue_in_entryRuleBooleanValue4514 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBooleanValue4524 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBOOL_in_ruleBooleanValue4569 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerType_in_entryRuleIntegerType4604 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntegerType4614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_31_in_ruleIntegerType4660 = new BitSet(new long[]{0x0000000100000002L});
    public static final BitSet FOLLOW_32_in_ruleIntegerType4673 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleNamedNumber_in_ruleIntegerType4694 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_25_in_ruleIntegerType4707 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleNamedNumber_in_ruleIntegerType4728 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_33_in_ruleIntegerType4742 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedNumber_in_entryRuleNamedNumber4780 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamedNumber4790 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNamedNumber4833 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleNamedNumber4850 = new BitSet(new long[]{0x0000000000000020L,0x0000000800000000L});
    public static final BitSet FOLLOW_ruleSignedNumber_in_ruleNamedNumber4871 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleNamedNumber4883 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNamedNumber4908 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleNamedNumber4925 = new BitSet(new long[]{0x00002001000001F0L,0x000003E800000000L});
    public static final BitSet FOLLOW_ruleDefinedValue_in_ruleNamedNumber4946 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleNamedNumber4958 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerValue_in_entryRuleIntegerValue4995 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntegerValue5005 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSignedNumber_in_ruleIntegerValue5050 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumeratedType_in_entryRuleEnumeratedType5085 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnumeratedType5095 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_36_in_ruleEnumeratedType5141 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleEnumeratedType5153 = new BitSet(new long[]{0x0000002000000010L});
    public static final BitSet FOLLOW_37_in_ruleEnumeratedType5166 = new BitSet(new long[]{0x1C00F451C00001F0L,0x000003E800FFFFFAL});
    public static final BitSet FOLLOW_ruleExceptionSpec_in_ruleEnumeratedType5187 = new BitSet(new long[]{0x0000002000000010L});
    public static final BitSet FOLLOW_ruleEnumerationItem_in_ruleEnumeratedType5210 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_25_in_ruleEnumeratedType5223 = new BitSet(new long[]{0x0000002000000010L});
    public static final BitSet FOLLOW_ruleEnumerationItem_in_ruleEnumeratedType5244 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_33_in_ruleEnumeratedType5258 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnumerationItem_in_entryRuleEnumerationItem5294 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnumerationItem5304 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleEnumerationItem5346 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedNumber_in_ruleEnumerationItem5378 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleEnumerationItem5402 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealType_in_entryRuleRealType5451 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRealType5461 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_38_in_ruleRealType5507 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealValue_in_entryRuleRealValue5543 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRealValue5553 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumericRealValue_in_ruleRealValue5600 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSpecialRealValue_in_ruleRealValue5627 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumericRealValue_in_entryRuleNumericRealValue5662 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumericRealValue5672 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDoubleNumber_in_ruleNumericRealValue5718 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealSequenceValue_in_ruleNumericRealValue5745 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealSequenceValue_in_entryRuleRealSequenceValue5781 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRealSequenceValue5791 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleRealSequenceValue5828 = new BitSet(new long[]{0x0000008000000000L});
    public static final BitSet FOLLOW_39_in_ruleRealSequenceValue5840 = new BitSet(new long[]{0x0000000000000020L,0x0000000800000000L});
    public static final BitSet FOLLOW_ruleSignedNumber_in_ruleRealSequenceValue5861 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleRealSequenceValue5873 = new BitSet(new long[]{0x0000010000000000L});
    public static final BitSet FOLLOW_40_in_ruleRealSequenceValue5885 = new BitSet(new long[]{0x0000000000000020L,0x0000000800000000L});
    public static final BitSet FOLLOW_ruleSignedNumber_in_ruleRealSequenceValue5906 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleRealSequenceValue5918 = new BitSet(new long[]{0x0000020000000000L});
    public static final BitSet FOLLOW_41_in_ruleRealSequenceValue5930 = new BitSet(new long[]{0x0000000000000020L,0x0000000800000000L});
    public static final BitSet FOLLOW_ruleSignedNumber_in_ruleRealSequenceValue5951 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleRealSequenceValue5963 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSpecialRealValue_in_entryRuleSpecialRealValue5999 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSpecialRealValue6009 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSpecialValue_in_ruleSpecialRealValue6054 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBitStringType_in_entryRuleBitStringType6089 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBitStringType6099 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_42_in_ruleBitStringType6145 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_43_in_ruleBitStringType6157 = new BitSet(new long[]{0x0000000100000002L});
    public static final BitSet FOLLOW_32_in_ruleBitStringType6170 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleNamedBit_in_ruleBitStringType6191 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_25_in_ruleBitStringType6204 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleNamedBit_in_ruleBitStringType6225 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_33_in_ruleBitStringType6239 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedBit_in_entryRuleNamedBit6277 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamedBit6287 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNamedBit6330 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleNamedBit6347 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleNamedBit6364 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleNamedBit6381 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleNamedBit6406 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_34_in_ruleNamedBit6423 = new BitSet(new long[]{0x00002001000001F0L,0x000003E800000000L});
    public static final BitSet FOLLOW_ruleDefinedValue_in_ruleNamedBit6444 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleNamedBit6456 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOctetStringType_in_entryRuleOctetStringType6495 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOctetStringType6505 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_44_in_ruleOctetStringType6551 = new BitSet(new long[]{0x0000080000000000L});
    public static final BitSet FOLLOW_43_in_ruleOctetStringType6563 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOctetStringValue_in_entryRuleOctetStringValue6599 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOctetStringValue6609 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_B_STRING_in_ruleOctetStringValue6651 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_H_STRING_in_ruleOctetStringValue6679 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_45_in_ruleOctetStringValue6703 = new BitSet(new long[]{0x00002001000001F0L,0x000003E800000000L});
    public static final BitSet FOLLOW_ruleValue_in_ruleOctetStringValue6724 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNullType_in_entryRuleNullType6761 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNullType6771 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_46_in_ruleNullType6817 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSequenceType_in_entryRuleSequenceType6855 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSequenceType6865 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleSequenceType6911 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleSequenceType6923 = new BitSet(new long[]{0x0020002202000010L});
    public static final BitSet FOLLOW_ruleComponentTypeList_in_ruleSequenceType6944 = new BitSet(new long[]{0x0000002202000000L});
    public static final BitSet FOLLOW_25_in_ruleSequenceType6958 = new BitSet(new long[]{0x0000002200000000L});
    public static final BitSet FOLLOW_ruleExtensionAndException_in_ruleSequenceType6982 = new BitSet(new long[]{0x0022000202000010L});
    public static final BitSet FOLLOW_ruleExtensionAdditions_in_ruleSequenceType7003 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_ruleExtensionMarker_in_ruleSequenceType7021 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleSequenceType7036 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAndException_in_entryRuleExtensionAndException7072 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionAndException7082 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_37_in_ruleExtensionAndException7128 = new BitSet(new long[]{0x1C00F451C00001F2L,0x000003E800FFFFFAL});
    public static final BitSet FOLLOW_ruleExceptionSpec_in_ruleExtensionAndException7149 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionMarker_in_entryRuleExtensionMarker7187 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionMarker7198 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_25_in_ruleExtensionMarker7236 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleExtensionMarker7249 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAdditions_in_entryRuleExtensionAdditions7289 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionAdditions7299 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAddition_in_ruleExtensionAdditions7345 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleExtensionAdditions7358 = new BitSet(new long[]{0x0022000000000010L});
    public static final BitSet FOLLOW_ruleExtensionAddition_in_ruleExtensionAdditions7379 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_ruleComponentTypeList_in_entryRuleComponentTypeList7417 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentTypeList7427 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentType_in_ruleComponentTypeList7473 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleComponentTypeList7486 = new BitSet(new long[]{0x0020000000000010L});
    public static final BitSet FOLLOW_ruleComponentType_in_ruleComponentTypeList7507 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_ruleVersionNumber_in_entryRuleVersionNumber7545 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVersionNumber7555 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleVersionNumber7597 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_ruleVersionNumber7614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAddition_in_entryRuleExtensionAddition7650 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionAddition7660 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentType_in_ruleExtensionAddition7707 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAdditionGroup_in_ruleExtensionAddition7734 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAdditionGroup_in_entryRuleExtensionAdditionGroup7769 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionAdditionGroup7779 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleExtensionAdditionGroup7816 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleVersionNumber_in_ruleExtensionAdditionGroup7837 = new BitSet(new long[]{0x0020000000000010L});
    public static final BitSet FOLLOW_ruleComponentTypeList_in_ruleExtensionAdditionGroup7858 = new BitSet(new long[]{0x0004000000000000L});
    public static final BitSet FOLLOW_50_in_ruleExtensionAdditionGroup7870 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentType_in_entryRuleComponentType7906 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentType7916 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedComponentType_in_ruleComponentType7963 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentOfType_in_ruleComponentType7990 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnyDefinedNamedType_in_ruleComponentType8017 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedComponentType_in_entryRuleNamedComponentType8052 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNamedComponentType8062 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedType_in_ruleNamedComponentType8108 = new BitSet(new long[]{0x0018000000000002L});
    public static final BitSet FOLLOW_51_in_ruleNamedComponentType8121 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_52_in_ruleNamedComponentType8140 = new BitSet(new long[]{0x00002001000001F0L,0x000003E800000000L});
    public static final BitSet FOLLOW_ruleValue_in_ruleNamedComponentType8161 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentOfType_in_entryRuleComponentOfType8200 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentOfType8210 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_53_in_ruleComponentOfType8247 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_54_in_ruleComponentOfType8259 = new BitSet(new long[]{0x1C00D450C0000010L,0x0000000000FFFFFAL});
    public static final BitSet FOLLOW_ruleType_in_ruleComponentOfType8280 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAnyDefinedNamedType_in_entryRuleAnyDefinedNamedType8316 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAnyDefinedNamedType8326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAnyDefinedNamedType8368 = new BitSet(new long[]{0x0080000000000000L});
    public static final BitSet FOLLOW_55_in_ruleAnyDefinedNamedType8385 = new BitSet(new long[]{0x0100000000000000L});
    public static final BitSet FOLLOW_56_in_ruleAnyDefinedNamedType8397 = new BitSet(new long[]{0x0200000000000000L});
    public static final BitSet FOLLOW_57_in_ruleAnyDefinedNamedType8409 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleAnyDefinedNamedType8429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSequenceValue_in_entryRuleSequenceValue8465 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSequenceValue8475 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleSequenceValue8521 = new BitSet(new long[]{0x0000000200000010L});
    public static final BitSet FOLLOW_ruleComponentValueList_in_ruleSequenceValue8542 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleSequenceValue8555 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleComponentValueList_in_entryRuleComponentValueList8591 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleComponentValueList8601 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedValue_in_ruleComponentValueList8647 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleComponentValueList8660 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleNamedValue_in_ruleComponentValueList8681 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_ruleSequenceOfType_in_entryRuleSequenceOfType8719 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSequenceOfType8729 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_47_in_ruleSequenceOfType8766 = new BitSet(new long[]{0x0040000400000000L});
    public static final BitSet FOLLOW_ruleConstraint_in_ruleSequenceOfType8787 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_54_in_ruleSequenceOfType8800 = new BitSet(new long[]{0x1C00D450C0000010L,0x0000000000FFFFFAL});
    public static final BitSet FOLLOW_ruleType_in_ruleSequenceOfType8821 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSetType_in_entryRuleSetType8857 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSetType8867 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_ruleSetType8913 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleSetType8925 = new BitSet(new long[]{0x0020002200000010L});
    public static final BitSet FOLLOW_ruleExtensionAndException_in_ruleSetType8948 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_ruleExtensionMarker_in_ruleSetType8965 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_ruleComponentTypeList_in_ruleSetType8994 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleSetType9008 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSetOfType_in_entryRuleSetOfType9044 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSetOfType9054 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_58_in_ruleSetOfType9091 = new BitSet(new long[]{0x0040000400000000L});
    public static final BitSet FOLLOW_ruleConstraint_in_ruleSetOfType9112 = new BitSet(new long[]{0x0040000000000000L});
    public static final BitSet FOLLOW_54_in_ruleSetOfType9125 = new BitSet(new long[]{0x1C00D450C0000010L,0x0000000000FFFFFAL});
    public static final BitSet FOLLOW_ruleType_in_ruleSetOfType9146 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleChoiceType_in_entryRuleChoiceType9182 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChoiceType9192 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_59_in_ruleChoiceType9238 = new BitSet(new long[]{0x0000000100000000L});
    public static final BitSet FOLLOW_32_in_ruleChoiceType9250 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleAlternativeTypeList_in_ruleChoiceType9271 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_25_in_ruleChoiceType9284 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_ruleExtensionAndException_in_ruleChoiceType9305 = new BitSet(new long[]{0x0002000202000010L});
    public static final BitSet FOLLOW_ruleExtensionAdditionAlternativesList_in_ruleChoiceType9326 = new BitSet(new long[]{0x0000000202000000L});
    public static final BitSet FOLLOW_ruleExtensionMarker_in_ruleChoiceType9344 = new BitSet(new long[]{0x0000000200000000L});
    public static final BitSet FOLLOW_33_in_ruleChoiceType9359 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleAlternativeTypeList_in_entryRuleAlternativeTypeList9395 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleAlternativeTypeList9405 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedType_in_ruleAlternativeTypeList9451 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleAlternativeTypeList9464 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleNamedType_in_ruleAlternativeTypeList9485 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_ruleExtensionAdditionAlternativesGroup_in_entryRuleExtensionAdditionAlternativesGroup9523 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionAdditionAlternativesGroup9533 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_49_in_ruleExtensionAdditionAlternativesGroup9570 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleVersionNumber_in_ruleExtensionAdditionAlternativesGroup9591 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_ruleAlternativeTypeList_in_ruleExtensionAdditionAlternativesGroup9612 = new BitSet(new long[]{0x0004000000000000L});
    public static final BitSet FOLLOW_50_in_ruleExtensionAdditionAlternativesGroup9624 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAdditionAlternative_in_entryRuleExtensionAdditionAlternative9660 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionAdditionAlternative9670 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAdditionAlternativesGroup_in_ruleExtensionAdditionAlternative9717 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedType_in_ruleExtensionAdditionAlternative9744 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAdditionAlternativesList_in_entryRuleExtensionAdditionAlternativesList9779 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExtensionAdditionAlternativesList9789 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExtensionAdditionAlternative_in_ruleExtensionAdditionAlternativesList9835 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleExtensionAdditionAlternativesList9848 = new BitSet(new long[]{0x0002000000000010L});
    public static final BitSet FOLLOW_ruleExtensionAdditionAlternative_in_ruleExtensionAdditionAlternativesList9869 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_ruleChoiceValue_in_entryRuleChoiceValue9907 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleChoiceValue9917 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleChoiceValue9959 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_ruleChoiceValue9976 = new BitSet(new long[]{0x00002001000001F0L,0x000003E800000000L});
    public static final BitSet FOLLOW_ruleValue_in_ruleChoiceValue9997 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrefixedType_in_entryRulePrefixedType10033 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePrefixedType10043 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTaggedType_in_rulePrefixedType10089 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTaggedType_in_entryRuleTaggedType10123 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTaggedType10133 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTag_in_ruleTaggedType10179 = new BitSet(new long[]{0x1C00D450C0180010L,0x0000000000FFFFFAL});
    public static final BitSet FOLLOW_ruleTagSpec_in_ruleTaggedType10200 = new BitSet(new long[]{0x1C00D450C0000010L,0x0000000000FFFFFAL});
    public static final BitSet FOLLOW_ruleType_in_ruleTaggedType10222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTag_in_entryRuleTag10258 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTag10268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_60_in_ruleTag10305 = new BitSet(new long[]{0xC0002001000001F0L,0x000003E800000001L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTag10322 = new BitSet(new long[]{0xC0002001000001F0L,0x000003E800000001L});
    public static final BitSet FOLLOW_ruleTagClass_in_ruleTag10349 = new BitSet(new long[]{0xC0002001000001F0L,0x000003E800000001L});
    public static final BitSet FOLLOW_ruleClassNumber_in_ruleTag10371 = new BitSet(new long[]{0x2000000000000000L});
    public static final BitSet FOLLOW_61_in_ruleTag10383 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTagSpec_in_entryRuleTagSpec10420 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTagSpec10431 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_20_in_ruleTagSpec10469 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_19_in_ruleTagSpec10488 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTagClass_in_entryRuleTagClass10529 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTagClass10540 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_62_in_ruleTagClass10578 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_63_in_ruleTagClass10597 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_64_in_ruleTagClass10616 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleClassNumber_in_entryRuleClassNumber10656 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleClassNumber10666 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleClassNumber10708 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinedValue_in_ruleClassNumber10740 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleObjectIdentifierType_in_entryRuleObjectIdentifierType10776 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleObjectIdentifierType10786 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_65_in_ruleObjectIdentifierType10832 = new BitSet(new long[]{0x0000000000000000L,0x0000000000000004L});
    public static final BitSet FOLLOW_66_in_ruleObjectIdentifierType10844 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleObjectIdentifierValue_in_entryRuleObjectIdentifierValue10880 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleObjectIdentifierValue10890 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_32_in_ruleObjectIdentifierValue10927 = new BitSet(new long[]{0x00002001000001F0L,0x000003E800000000L});
    public static final BitSet FOLLOW_ruleObjIdComponents_in_ruleObjectIdentifierValue10948 = new BitSet(new long[]{0x00002003000001F0L,0x000003E800000000L});
    public static final BitSet FOLLOW_33_in_ruleObjectIdentifierValue10961 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleObjIdComponents_in_entryRuleObjIdComponents10997 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleObjIdComponents11007 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleObjIdComponents11049 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNamedNumber_in_ruleObjIdComponents11082 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinedValue_in_ruleObjIdComponents11109 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTimeType_in_entryRuleTimeType11144 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTimeType11154 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_67_in_ruleTimeType11200 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDateType_in_entryRuleDateType11236 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDateType11246 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_68_in_ruleDateType11292 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTimeOfDayType_in_entryRuleTimeOfDayType11328 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTimeOfDayType11338 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_69_in_ruleTimeOfDayType11384 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDateTimeType_in_entryRuleDateTimeType11420 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDateTimeType11430 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_70_in_ruleDateTimeType11476 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDurationType_in_entryRuleDurationType11512 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDurationType11522 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_71_in_ruleDurationType11568 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCharacterStringType_in_entryRuleCharacterStringType11604 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCharacterStringType11614 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRestrictedCharacterStringType_in_ruleCharacterStringType11660 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleCharacterStringValue_in_entryRuleCharacterStringValue11694 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleCharacterStringValue11704 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRestrictedCharacterStringValue_in_ruleCharacterStringValue11750 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRestrictedCharacterStringType_in_entryRuleRestrictedCharacterStringType11784 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRestrictedCharacterStringType11794 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBMPString_in_ruleRestrictedCharacterStringType11841 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGeneralString_in_ruleRestrictedCharacterStringType11868 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGraphicString_in_ruleRestrictedCharacterStringType11895 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIA5String_in_ruleRestrictedCharacterStringType11922 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleISO646String_in_ruleRestrictedCharacterStringType11949 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumericString_in_ruleRestrictedCharacterStringType11976 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrintableString_in_ruleRestrictedCharacterStringType12003 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTeletexString_in_ruleRestrictedCharacterStringType12030 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleT61String_in_ruleRestrictedCharacterStringType12057 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUniversalString_in_ruleRestrictedCharacterStringType12084 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUTF8String_in_ruleRestrictedCharacterStringType12111 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVideotexString_in_ruleRestrictedCharacterStringType12138 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVisibleString_in_ruleRestrictedCharacterStringType12165 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleBMPString_in_entryRuleBMPString12200 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleBMPString12210 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_72_in_ruleBMPString12256 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGeneralString_in_entryRuleGeneralString12292 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGeneralString12302 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_73_in_ruleGeneralString12348 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGraphicString_in_entryRuleGraphicString12384 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGraphicString12394 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_74_in_ruleGraphicString12440 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIA5String_in_entryRuleIA5String12476 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIA5String12486 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_75_in_ruleIA5String12532 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleISO646String_in_entryRuleISO646String12568 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleISO646String12578 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_76_in_ruleISO646String12624 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleNumericString_in_entryRuleNumericString12660 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleNumericString12670 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_77_in_ruleNumericString12716 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePrintableString_in_entryRulePrintableString12752 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePrintableString12762 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_78_in_rulePrintableString12808 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTeletexString_in_entryRuleTeletexString12844 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTeletexString12854 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_79_in_ruleTeletexString12900 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleT61String_in_entryRuleT61String12936 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleT61String12946 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_80_in_ruleT61String12992 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUniversalString_in_entryRuleUniversalString13028 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUniversalString13038 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_81_in_ruleUniversalString13084 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUTF8String_in_entryRuleUTF8String13120 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUTF8String13130 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_82_in_ruleUTF8String13176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVideotexString_in_entryRuleVideotexString13212 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVideotexString13222 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_83_in_ruleVideotexString13268 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleVisibleString_in_entryRuleVisibleString13304 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleVisibleString13314 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_84_in_ruleVisibleString13360 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRestrictedCharacterStringValue_in_entryRuleRestrictedCharacterStringValue13396 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRestrictedCharacterStringValue13406 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleRestrictedCharacterStringValue13451 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUsefulType_in_entryRuleUsefulType13488 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUsefulType13498 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGeneralizedTime_in_ruleUsefulType13544 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUniversalTime_in_ruleUsefulType13571 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleObjectDescriptor_in_ruleUsefulType13598 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleGeneralizedTime_in_entryRuleGeneralizedTime13635 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleGeneralizedTime13646 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_85_in_ruleGeneralizedTime13683 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUniversalTime_in_entryRuleUniversalTime13723 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUniversalTime13734 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_86_in_ruleUniversalTime13771 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleObjectDescriptor_in_entryRuleObjectDescriptor13811 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleObjectDescriptor13822 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_87_in_ruleObjectDescriptor13859 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstraint_in_entryRuleConstraint13898 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConstraint13908 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_34_in_ruleConstraint13945 = new BitSet(new long[]{0x1C00F451E40001F0L,0x000003ED20FFFFFAL});
    public static final BitSet FOLLOW_ruleConstraintSpec_in_ruleConstraint13966 = new BitSet(new long[]{0x1C00F459C00001F0L,0x000003E800FFFFFAL});
    public static final BitSet FOLLOW_ruleExceptionSpec_in_ruleConstraint13987 = new BitSet(new long[]{0x0000000800000000L});
    public static final BitSet FOLLOW_35_in_ruleConstraint14000 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleConstraintSpec_in_entryRuleConstraintSpec14036 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleConstraintSpec14046 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubtypeConstraint_in_ruleConstraintSpec14092 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubtypeConstraint_in_entryRuleSubtypeConstraint14126 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSubtypeConstraint14136 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementSetSpecs_in_ruleSubtypeConstraint14182 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementSetSpecs_in_entryRuleElementSetSpecs14216 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElementSetSpecs14226 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementSetSpec_in_ruleElementSetSpecs14272 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleElementSetSpecs14285 = new BitSet(new long[]{0x0000002000000000L});
    public static final BitSet FOLLOW_37_in_ruleElementSetSpecs14297 = new BitSet(new long[]{0x0000000002000002L});
    public static final BitSet FOLLOW_25_in_ruleElementSetSpecs14310 = new BitSet(new long[]{0x1C00F451E40001F0L,0x000003ED20FFFFFAL});
    public static final BitSet FOLLOW_ruleElementSetSpec_in_ruleElementSetSpecs14331 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElementSetSpec_in_entryRuleElementSetSpec14371 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElementSetSpec14381 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnions_in_ruleElementSetSpec14428 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_26_in_ruleElementSetSpec14446 = new BitSet(new long[]{0x0000000000000000L,0x0000000010000000L});
    public static final BitSet FOLLOW_ruleExclusions_in_ruleElementSetSpec14467 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUnions_in_entryRuleUnions14504 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUnions14514 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntersections_in_ruleUnions14560 = new BitSet(new long[]{0x0000000000000002L,0x0000000003000000L});
    public static final BitSet FOLLOW_88_in_ruleUnions14574 = new BitSet(new long[]{0x1C00F451E00001F0L,0x000003ED20FFFFFAL});
    public static final BitSet FOLLOW_89_in_ruleUnions14592 = new BitSet(new long[]{0x1C00F451E00001F0L,0x000003ED20FFFFFAL});
    public static final BitSet FOLLOW_ruleIntersections_in_ruleUnions14614 = new BitSet(new long[]{0x0000000000000002L,0x0000000003000000L});
    public static final BitSet FOLLOW_ruleIntersections_in_entryRuleIntersections14652 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntersections14662 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntersectionElements_in_ruleIntersections14708 = new BitSet(new long[]{0x0000000000000002L,0x000000000C000000L});
    public static final BitSet FOLLOW_90_in_ruleIntersections14722 = new BitSet(new long[]{0x1C00F451E00001F0L,0x000003ED20FFFFFAL});
    public static final BitSet FOLLOW_91_in_ruleIntersections14740 = new BitSet(new long[]{0x1C00F451E00001F0L,0x000003ED20FFFFFAL});
    public static final BitSet FOLLOW_ruleIntersectionElements_in_ruleIntersections14762 = new BitSet(new long[]{0x0000000000000002L,0x000000000C000000L});
    public static final BitSet FOLLOW_ruleIntersectionElements_in_entryRuleIntersectionElements14800 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleIntersectionElements14810 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElements_in_ruleIntersectionElements14856 = new BitSet(new long[]{0x0000000000000002L,0x0000000010000000L});
    public static final BitSet FOLLOW_ruleExclusions_in_ruleIntersectionElements14877 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExclusions_in_entryRuleExclusions14914 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExclusions14924 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_92_in_ruleExclusions14961 = new BitSet(new long[]{0x1C00F451E00001F0L,0x000003ED20FFFFFAL});
    public static final BitSet FOLLOW_ruleElements_in_ruleExclusions14982 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleElements_in_entryRuleElements15018 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleElements15028 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubtypeElements_in_ruleElements15074 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSubtypeElements_in_entryRuleSubtypeElements15108 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSubtypeElements15118 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSingleValue_in_ruleSubtypeElements15171 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainedSubtype_in_ruleSubtypeElements15199 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValueRange_in_ruleSubtypeElements15226 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePermittedAlphabet_in_ruleSubtypeElements15253 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSizeConstraint_in_ruleSubtypeElements15280 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeConstraint_in_ruleSubtypeElements15307 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSingleValue_in_entryRuleSingleValue15342 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSingleValue15352 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValue_in_ruleSingleValue15397 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleContainedSubtype_in_entryRuleContainedSubtype15432 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleContainedSubtype15442 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_93_in_ruleContainedSubtype15479 = new BitSet(new long[]{0x1C00D450C0000010L,0x0000000000FFFFFAL});
    public static final BitSet FOLLOW_ruleType_in_ruleContainedSubtype15500 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValueRange_in_entryRuleValueRange15536 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValueRange15546 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLowerEndpoint_in_ruleValueRange15592 = new BitSet(new long[]{0x0000000000000000L,0x0000000040000000L});
    public static final BitSet FOLLOW_94_in_ruleValueRange15604 = new BitSet(new long[]{0x00002001000001E0L,0x000003EA80000000L});
    public static final BitSet FOLLOW_ruleUpperEndpoint_in_ruleValueRange15625 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLowerEndpoint_in_entryRuleLowerEndpoint15661 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLowerEndpoint15671 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLowerEndValue_in_ruleLowerEndpoint15717 = new BitSet(new long[]{0x0000000000000002L,0x0000000080000000L});
    public static final BitSet FOLLOW_95_in_ruleLowerEndpoint15735 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUpperEndpoint_in_entryRuleUpperEndpoint15785 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUpperEndpoint15795 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_95_in_ruleUpperEndpoint15838 = new BitSet(new long[]{0x00002001000001E0L,0x000003EA80000000L});
    public static final BitSet FOLLOW_ruleUpperEndValue_in_ruleUpperEndpoint15873 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLowerEndValue_in_entryRuleLowerEndValue15909 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLowerEndValue15919 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValueRangeValue_in_ruleLowerEndValue15965 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_96_in_ruleLowerEndValue15989 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleUpperEndValue_in_entryRuleUpperEndValue16038 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleUpperEndValue16048 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValueRangeValue_in_ruleUpperEndValue16094 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_97_in_ruleUpperEndValue16118 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSizeConstraint_in_entryRuleSizeConstraint16167 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSizeConstraint16177 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_98_in_ruleSizeConstraint16214 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_ruleConstraint_in_ruleSizeConstraint16235 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTypeConstraint_in_entryRuleTypeConstraint16271 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTypeConstraint16281 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleTypeConstraint16326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_rulePermittedAlphabet_in_entryRulePermittedAlphabet16361 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRulePermittedAlphabet16371 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_29_in_rulePermittedAlphabet16408 = new BitSet(new long[]{0x0000000400000000L});
    public static final BitSet FOLLOW_ruleConstraint_in_rulePermittedAlphabet16429 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleValueRangeValue_in_entryRuleValueRangeValue16465 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleValueRangeValue16475 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleIntegerValue_in_ruleValueRangeValue16522 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRealValue_in_ruleValueRangeValue16549 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRestrictedCharacterStringValue_in_ruleValueRangeValue16576 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExceptionSpec_in_entryRuleExceptionSpec16611 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExceptionSpec16621 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExceptionIdentification_in_ruleExceptionSpec16666 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExceptionIdentification_in_entryRuleExceptionIdentification16701 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExceptionIdentification16711 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleExceptionIdentification16753 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDefinedValue_in_ruleExceptionIdentification16785 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleExceptionIdentification16813 = new BitSet(new long[]{0x0001000000000000L});
    public static final BitSet FOLLOW_48_in_ruleExceptionIdentification16825 = new BitSet(new long[]{0x00002001000001F0L,0x000003E800000000L});
    public static final BitSet FOLLOW_ruleValue_in_ruleExceptionIdentification16846 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSignedNumber_in_entryRuleSignedNumber16884 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSignedNumber16895 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_99_in_ruleSignedNumber16934 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleSignedNumber16951 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleDoubleNumber_in_entryRuleDoubleNumber16997 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleDoubleNumber17008 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_99_in_ruleDoubleNumber17047 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleDoubleNumber17064 = new BitSet(new long[]{0x0000000000000000L,0x0000001000000000L});
    public static final BitSet FOLLOW_100_in_ruleDoubleNumber17082 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_LONG_in_ruleDoubleNumber17097 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_101_in_ruleSpecialValue17156 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_102_in_ruleSpecialValue17173 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_103_in_ruleSpecialValue17190 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_104_in_ruleBOOL17235 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_105_in_ruleBOOL17252 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSingleValue_in_synpred1_InternalAsn115155 = new BitSet(new long[]{0x0000000000000002L});

}